如何使用Numpy Add函数

312 阅读7分钟

在本教程中,我将解释如何使用Numpy add函数--又称np.add--来添加两个Numpy数组的值。

我将解释np.add的语法,该函数如何工作,以及如何使用它。

如果你需要特定的东西,你可以点击以下任何一个链接。

目录:

好的。 让我们先快速介绍一下这个函数。

对Numpy Add的快速介绍

你可能已经知道,Numpy add函数添加Numpy数组或其他对象(如列表和标量值)的值。

可以说,该函数最重要的用途是将两个相同大小的Numpy数组的值相加。当你对两个相同大小的数组使用np.add时,该函数将把两个数组的值按元素相加。 实际上,Numpy add函数在Python中执行了矩阵加法。

A simple example that shows how Numpy add adds the elements of two same-sized Numpy arrays, in an element-wise fashion.

尽管如此,你也可以在不同类型的输入上使用Numpy add函数。

你可以在两个标量值上使用np.add函数。

你可以在列表上使用np.add (在这种情况下,它就像Numpy数组一样操作)。

而且你可以在一个多维数组和一个低维数组上使用Numpy add。 例如,你可以对一个二维数组和一个一维数组使用np.add。 在这种情况下,Numpy会将低维数组 "广播 "到高维数组中,并将这些值按元素相加。 (如果你这样做,对输入数组的形状会有一些限制)。

我将在例子部分向你展示所有这些使用情况的例子。

但首先,让我们看看这个函数的语法。

np.add的语法

Numpy add函数的语法非常简单。

An image that shows the syntax for the np.add function.

请记住,上面显示的语法是假设你已经用别名np ,导入了Numpy。

输入数组的格式

这里,我想对两个输入的格式做一些评论。

在上面的语法解释中,有两个输入(也就是参数)。 在图片中,我把这些输入称为arr1arr1 ,并且我建议它们应该是Numpy数组。 通常,当我们使用np.add时,这些输入 Numpy数组

但是这个函数也会接受其他类型的输入:你可以提供类似数组的对象,比如Python列表,以及标量值。

输入的形状

对输入的形状也有一些限制。 这很重要,因为函数的行为将根据输入的形状而改变。

使用这个函数的第一种方式是两个大小相同的数组(即行数和列数相同的数组)。 如果我们用两个相同大小的数组来使用np.add,那么Numpy add将把第二个数组的元素添加到第一个数组的元素中,以元素的方式进行。

A simple example showing how Numpy add adds the values of two same-sized arrays, element-wise.

也可以使用两个具有不同形状的输入数组。 如果你这样做,np.add函数将进行广播。 它将重复使用第二个数组作为一组值来添加到第一个数组的片断中。 为了使其发挥作用,数组必须有适当的大小。 我将在例子部分展示这个例子。

附加参数

除了两个输入外,Numpy add函数还有一些可选参数。

  • out
  • 其中

这些参数很少使用,所以我在这里不做解释。

np.add的输出

np.add的输出是一个新的Numpy数组,它包含了输入数组值的元素之和。

还要注意的是,对于标量的输出略有不同。 如果np.add的两个输入都是标量值,那么输出将是一个标量。

示例:如何添加Numpy数组的值

现在我们看完了语法,让我们看看一些如何将Numpy数组加在一起的例子。

例子

初步代码:导入Numpy和创建数组

在你运行这些例子之前,你需要运行一些代码来进行设置。

具体来说,你需要导入Numpy并创建一些我们可以使用的Numpy数组。

导入Numpy

首先,我们要导入Numpy。

你可以通过以下代码导入Numpy。

import numpy as np

创建数组

接下来,我们需要创建一些Numpy数组,在我们的例子中可以使用。

这里,我们将创建三个数组。

  • 一个一维的数字 "向量"。
  • 一个由1到9的数字组成的二维 "矩阵"(有序)
  • 一个由1到9的数字组成的二维 "矩阵"(随机)。

为了创建这些,我们将使用几个不同的Numpy函数。

我们将使用np.array来创建一个一维的值的向量

我们将使用np.range来创建一个包含数字序列的数组,称为numbers_1_to_9 。(我们不会直接使用它,但我们会用它来创建下一个数组)。

为了创建一个有序的二维数字数组,我们将使用np.reshape。 我们将在名为numbers_1_to_9 的数组上使用Numpy reshape 。

最后,我们将创建一个随机的二维数组,从numbers_1_to_9 ,使用Numpy随机选择。

# CREATE 1D 'VECTOR'
vector_1d = np.array([10,20,30])

# CREATE 2D MATRIX OF NUMBERS, 1 TO 9
numbers_1_to_9 = np.arange(start = 1, stop = 10)
matrix_2d_ordered = numbers_1_to_9.reshape((3,3))

# CREATE 2D MATRIX OF NUMBERS, 1 TO 9, RANDOMIZED
np.random.seed(22)
matrix_2d_random = np.random.choice(size = (3,3), a = numbers_1_to_9, replace = False)

如果这些都让你感到困惑,那么你应该阅读我在前面几段中链接的教程。 那些教程更详细地解释了这些Numpy操作。

所以一旦你运行了上面的代码,你就可以准备运行这些例子了。

例子1:使用Numpy来增加两个标量

让我们从简单的开始。

在这里,我们将使用np.add来添加两个标量值。

np.add(3,4)

输出

7

解释

这是很简单的。

在这里,我们将3和7这两个值相加:结果是7。

实例2:向数组添加标量

接下来,我们将把一个标量值添加到一个数组中。

np.add(matrix_2d_ordered, 10)

输出

array([[11, 12, 13],
       [14, 15, 16],
       [17, 18, 19]])

解释

在这里,我们使用np.add将一个标量值10添加到一个数组中,matrix_2d_ordered

在这种情况下,np.add将10加入到matrix_2d_ordered 的每个元素中,而输出数组仅仅包含了新的相加的值。

请注意,输出的形状与输入数组matrix_2d_ordered 的形状相同。

实例3:添加两个相同大小的Numpy数组

现在,让我们添加两个同样大小的数组。

具体来说,我们将把matrix_2d_random 添加到matrix_2d_ordered

np.add(matrix_2d_ordered, matrix_2d_random)

输出

array([[10,  4,  7],
       [ 7, 12,  7],
       [15, 13, 15]])

解释

在这里,np.add函数将matrix_2d_random 的值以元素的方式添加到matrix_2d_ordered 的相应值中。

An image that shows how np.add adds the values of two same-sized arrays in an element-wise fashion.

另外,注意输出的形状。 输出数组的形状与两个输入的形状相同。 当你将np.add应用于两个相同大小的数组时,它就是这样工作的。

实例4:将一个向量添加到一个矩阵中(即广播)

最后,将一个一维Numpy数组(即一个向量)添加到一个二维Numpy数组(即一个矩阵)。

np.add(matrix_2d_ordered, vector_1d)

输出

array([[11, 22, 33],
       [14, 25, 36],
       [17, 28, 39]])

解释

在这个例子中,我们将一维数组vector_1d 添加到二维数组matrix_2d_ordered

注意,它们的列数相同,但行数不同。 这允许Numpy将一维数组的值添加到二维数组的每一行。

这被称为 "广播"。在这里,np.add将一维数组 "广播 "到二维数组的各行中。

所以 np.add 将vector_1d 的值添加到matrix_2d_ordered 的第 1 行,按元素排列。然后它将vector_1d 的值添加到matrix_2d_ordered 的第2行。以此类推。

An image that shows how Numpy add adds the values of a 1D array to the values of a 2D array, using broadcasting.

同样,注意到这是可能的,因为vector_1d 中的元素数与matrix_2d_ordered 中的列数相同。 为了使广播正常运行,两个输入中的列数需要有适当的大小。

在本教程中,我已经解释了如何用np.add添加Numpy数组。

这应该有助于你执行矩阵加法,但如果你真的想学习Numpy,还有很多东西要学。