在本教程中,我将解释如何使用Numpy add函数--又称np.add--来添加两个Numpy数组的值。
我将解释np.add的语法,该函数如何工作,以及如何使用它。
如果你需要特定的东西,你可以点击以下任何一个链接。
目录:
好的。 让我们先快速介绍一下这个函数。
对Numpy Add的快速介绍
你可能已经知道,Numpy add函数添加Numpy数组或其他对象(如列表和标量值)的值。
可以说,该函数最重要的用途是将两个相同大小的Numpy数组的值相加。当你对两个相同大小的数组使用np.add时,该函数将把两个数组的值按元素相加。 实际上,Numpy add函数在Python中执行了矩阵加法。
尽管如此,你也可以在不同类型的输入上使用Numpy add函数。
你可以在两个标量值上使用np.add函数。
你可以在列表上使用np.add (在这种情况下,它就像Numpy数组一样操作)。
而且你可以在一个多维数组和一个低维数组上使用Numpy add。 例如,你可以对一个二维数组和一个一维数组使用np.add。 在这种情况下,Numpy会将低维数组 "广播 "到高维数组中,并将这些值按元素相加。 (如果你这样做,对输入数组的形状会有一些限制)。
我将在例子部分向你展示所有这些使用情况的例子。
但首先,让我们看看这个函数的语法。
np.add的语法
Numpy add函数的语法非常简单。
请记住,上面显示的语法是假设你已经用别名np
,导入了Numpy。
输入数组的格式
这里,我想对两个输入的格式做一些评论。
在上面的语法解释中,有两个输入(也就是参数)。 在图片中,我把这些输入称为arr1
和arr1
,并且我建议它们应该是Numpy数组。 通常,当我们使用np.add时,这些输入是 Numpy数组。
但是这个函数也会接受其他类型的输入:你可以提供类似数组的对象,比如Python列表,以及标量值。
输入的形状
对输入的形状也有一些限制。 这很重要,因为函数的行为将根据输入的形状而改变。
使用这个函数的第一种方式是两个大小相同的数组(即行数和列数相同的数组)。 如果我们用两个相同大小的数组来使用np.add,那么Numpy add将把第二个数组的元素添加到第一个数组的元素中,以元素的方式进行。
也可以使用两个具有不同形状的输入数组。 如果你这样做,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
的相应值中。
另外,注意输出的形状。 输出数组的形状与两个输入的形状相同。 当你将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行。以此类推。
同样,注意到这是可能的,因为vector_1d
中的元素数与matrix_2d_ordered
中的列数相同。 为了使广播正常运行,两个输入中的列数需要有适当的大小。
在本教程中,我已经解释了如何用np.add添加Numpy数组。
这应该有助于你执行矩阵加法,但如果你真的想学习Numpy,还有很多东西要学。