什么是 NumPy?

NumPy 是一个强大的 Python 库, 主要用于在多维数组上执行计算。这个词 NumPy 是从两个字-数字 Python 派生的。NumPy 提供了一大组库函数和操作, 帮助程序员轻松地执行数值计算。这些类型的数值计算被广泛地应用在如下任务中:

  • 机器学习模型:在编写机器学习算法时, 人们应该对矩阵进行各种数值计算。例如, 矩阵乘法, 移位, 加法等。NumPy 提供了一个很好的库, 便于 (在编写代码方面) 和快速 (速度) 计算。NumPy 阵列用于存储训练数据以及机器学习模型的参数。
  • 图像处理和计算机图形:计算机中的图像表示为数字的多维数组。NumPy 成为了最自然的选择。NumPy 为快速操作图像提供了一些优秀的库功能。一些例子是镜像图像, 以某种角度旋转图像等。
  • 数学任务:NumPy 是非常有用的执行各种数学任务, 如数值积分, 微分, 插值, 外推, 以及其他许多。因此, 当涉及到数学任务时, 它就形成了快速的基于 Python 的 MATLAB 替换。

NumPy 安装

在您的计算机上安装 NumPy 的最快和最简单的方法是在 shell 上使用以下命令: pip install numpy .

这将在您的计算机上安装最新/最稳定的 NumPy 版本。通过 pip 安装是安装任何 Python 包的最简单方法。现在让我们来谈谈 NumPy 中最重要的概念, NumPy 数组。

NumPy 中的数组

NumPy 提供的最重要的数据结构是一个称为 NumPy 数组的强大对象。NumPy 数组是通常的 Python 数组的扩展。NumPy 阵列配备了大量的函数和运算符, 有助于快速编写我们上面讨论的各种类型计算的高性能代码。让我们来看看如何快速定义一维 NumPy 数组:

import numpy as np

my_array = np.array([1, 2, 3, 4, 5])

print my_array

在上面这个简单的例子中, 我们首先导入了 NumPy 库的使用 import numpy as np 。然后, 我们创建了一个简单的 NumPy 数组5整数, 然后我们打印它。去吧, 在你自己的机器上试用一下。使用 “NumPy 安装” 部分下的步骤, 确保已在计算机中安装了 NumPy。

现在让我们看看我们能对这个特定的 NumPy 阵列做些什么。

print my_array.shape

这将打印我们创建的数组的形状-(5)。这表示 my_array 是一个具有5个元素的数组。

我们也可以打印各个元素。就像正常的 Python 数组一样, NumPy 数组的索引是从0。

print my_array[0]

print my_array[1]

上述命令将分别在终端上打印1和2。我们还可以修改 NumPy 数组的元素。例如, 假设我们编写了以下2命令:

my_array[0] = -1

print my_array

我们将得到 [-1, 2, 3, 4, 5] 在屏幕上输出。

现在假设, 我们要创建一个长度为5的 NumPy 数组, 但所有元素都为 0, 我们能做到吗?是的

my_new_array = np.zeros((5))

print my_new_array

我们将得到 [0, 0, 0., 0., 0.] 作为输出。类似 np.zeros 的, 我们也有 np.ones 。如果我们要创建一个随机值数组怎么办?

my_random_array = np.random.random((5))

print my_random_array

我们将得到的输出将看起来类似 [0.22051844 0.35278286 0.11342404 0.79671772 0.62263151]。您得到的输出可能会有所不同, 因为我们使用的是随机函数, 它将每个元素分配为0和1之间的随机值。

现在让我们看看如何使用 NumPy 来创建2维数组。

my_2d_array = np.zeros((2, 3))

print my_2d_array

这将在屏幕上打印以下内容:

[[0. 0。0.]

[0. 0。0.]]

猜测以下代码的输出内容:

my_2d_array_new = np.ones((2, 4))

print my_2d_array_new

在这里:

[[1. 1。1. 1.]

[1. 1。1. 1.]]

基本上, 当您使用该函数 np.zeros() 或时 np.ones() , 可以指定讨论数组大小的元组。在以上两个示例中, 我们使用了以下元组 (2、3) 和 (2、4) 分别表示2行和3列。像上面的多维数组可以使用 my_array[i][j] 符号来索引, 其中 i 指示行号并 j 指示列号. i两个 j 从0开始.

my_array = np.array([[4, 5], [6, 1]])

print my_array[0][1]

以上代码段的输出为 5, 因为它是索引0行和索引1列中的元素。

还可以按如下方式打印 my_array 的形状:

print my_array.shape

输出为 (2、2), 表示数组中有2行和2列。

NumPy 提供了一种有效的方法来提取多维数组的行/列。例如, 考虑 my_array 我们上面定义的示例。

[[4 5]

[6 1]]

假设, 我们希望从它提取第二列 (索引 1) 的所有元素。在这里, 可以看到, 第二列由两个元素组成: 5 和1。为此, 我们可以执行以下操作:

my_array_column_2 = my_array[:, 1]

print my_array_column_2

请注意, 我们已经提供了一个冒号 (), 而不是行号, 我们 : 已经使用了值1的列号。输出将是: [5, 1]。

我们同样可以从多维 NumPy 数组中提取一行。现在, 让我们看看 NumPy 在几个阵列上执行计算时所提供的能量。

NumPy 中的阵列操纵

使用 NumPy, 您可以轻松地在阵列上执行数学运算。例如, 可以添加 NumPy 数组, 可以将它们减去, 可以将它们相乘, 甚至将它们分割。下面是以下几个示例:

import numpy as np

a = np.array([[1.0, 2.0], [3.0, 4.0]])

b = np.array([[5.0, 6.0], [7.0, 8.0]])

sum = a + b

difference = a - b

product = a * b

quotient = a / b

print “Sum = \n“, sum

print “Difference = \n“, difference

print “Product = \n“, product

print “Quotient = \n“, quotient

The output will be as follows:

Sum =

[[ 6

] [10。12.]] 差异 = [[-4.-4]

[-4.-4]]

产品 = [[5]。12.] [21。32.]] 商数 = [[0.2 0.33333333] [0.42857143 0.5]]

正如您所看到的, 乘法运算符执行元素的乘法, 而不是矩阵乘法。要执行矩阵乘法, 可以执行以下操作:

matrix_product = a.dot(b)

print “Matrix Product = “, matrix_product

输出将是:

[[19. 22]

[43. 50]]

总结

正如您所看到的, NumPy 在其提供的库功能方面确实非常强大。可以使用 NumPy 公开的优秀接口在单行代码中执行大计算。这使得它成为各种数值计算的优雅工具。如果你希望自己发展成数学家或数据科学家的职业, 你一定要考虑掌握它。在精通 NumPy 之前, 你需要了解 Python。

找到最好的Python 教程编程社区对 Hackr 的建议。一切都好!

Comments are closed.