在本教程中,我将解释如何使用Numpy的multiply函数--又称np.multiply--来将矩阵相乘。
我将解释np.multiply的语法,该函数如何工作,以及如何使用它。
如果你需要特定的东西,你可以点击以下任何一个链接。
目录:
好的,让我们开始吧。
Numpy Multiply的快速介绍
正如你可能已经猜到的,Numpy的乘法函数将矩阵相乘。
你可以使用np.multiply来将两个相同大小的数组相乘。 这将计算出一个叫做Hadamard乘积的东西。 在Hadamard乘法中,两个输入具有相同的形状,而输出包含了每个输入值的元素明智的乘积。
你也可以使用 np.multiply 来将一个矩阵乘以一个向量。 如果你用一个矩阵乘以一个向量(例如,一个多维数组乘以一个低维数组),Numpy会进行广播。
这两种技术都很简单,我将向你展示这两种技术的例子。
但首先,让我们看一下语法。
np.multiply的语法
Numpy multiply函数的语法很简单。
请记住,这个语法假设你已经用代码import numpy as np
,导入了Numpy。
输入数组的格式
注意,该函数有两个输入参数,我将其命名为arr1
和arr1
。 这些应该是Numpy数组或类似数组的对象,如Python的列表。
另外,对输入数组的形状也有一些限制。
使用 np.multiply 的一种方法是让两个输入数组的形状完全相同 (即它们有相同的行和列数)。 如果输入数组具有相同的形状,那么Numpy multiply函数将对输入的值进行相乘。
或者,如果两个输入数组的大小不一样,那么其中一个数组必须有一个可以在另一个数组中广播的形状。
如果你是Numpy的初学者,广播的理解有些复杂,所以我将在例子部分给你看一个例子。
附加参数
除了两个输入参数外,Numpy的乘法函数还有一些可选参数。
- out
- 其中
这些参数有点少用,但因此我不会在这里解释它们。
np.multiply的输出
np.multiply的输出是一个新的Numpy数组,包含了输入数组的元素相乘。
说到这里,对于标量有一个特殊情况:如果np.multiply的两个输入都是标量值,那么输出将是一个标量。
示例:如何计算Numpy数组的相乘关系
现在,让我们看一下一些例子。
例子
初步代码:导入Numpy并创建数组
在你运行任何例子之前,你需要运行一些初步代码。
具体来说,在你运行任何例子之前,你需要导入Numpy,并且需要创建一些我们可以使用的Numpy数组。
导入Numpy
首先,在我们使用任何Numpy函数之前,我们需要导入Numpy。
你可以用下面的代码来做。
import numpy as np
创建数组
接下来,我们需要创建一些我们可以操作的numpy数组。
这里,我们将创建几个Numpy对象。
- 一个一维的数字 "向量"。
- 一个由1到9的数字组成的2维 "矩阵"(有序)
- 一个由1到9的数字组成的二维 "矩阵"(随机)
为了做到这一点,我们将使用一些Numpy函数,如Numpy数组函数、Numpy arange函数、Numpy reshape方法和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.multiply将两个标量值相乘。
np.multiply(3,4)
输出
12
解释
很明显,这是非常简单和直接的。
在这里,我们只是将3乘以4。 其结果是12。
实例2:数组乘以标量
接下来,我们将用一个二维Numpy数组乘以一个标量(即,我们将用一个矩阵乘以一个标量)。
np.multiply(matrix_2d_ordered, 2)
输出
array([[ 2, 4, 6],
[ 8, 10, 12],
[14, 16, 18]])
解释
那么这里发生了什么?
我们用两个参数调用了np.multiply:Numpy数组matrix_2d_ordered
和标量值2。
对于输出,np.multiply将matrix_2d_ordered
的每个值都乘以2。
这是很直接的。
实例3:两个相同大小的Numpy数组相乘
现在,让我们将两个相同大小的数组相乘。
在这里,我们要将matrix_2d_ordered
与matrix_2d_random
相乘。
np.multiply(matrix_2d_ordered, matrix_2d_random)
输出
array([[ 9, 4, 12],
[12, 35, 6],
[56, 40, 54]])
解释
这里,np.multiply是将每个输入矩阵的值按元素相乘。
输出是一个与输入相同大小的矩阵,它包含了输入矩阵值的逐元乘积。
(这就是所谓的Hadamard乘积)。
例子4:矩阵乘以一个向量(即广播)
最后,让我们再做一个例子。
在这里,我们要用一个二维的输入数组乘以一个一维的数组。 实际上,这就像用一个矩阵乘以一个向量。
np.multiply(matrix_2d_ordered, vector_1d)
输出
array([[ 10, 40, 90],
[ 40, 100, 180],
[ 70, 160, 270]])
解释
在这个例子中,我们用一个二维矩阵乘以一个一维向量。(也就是说,我们将一个二维Numpy乘以一个一维Numpy数组)。
当我们这样做时,Numpy执行了所谓的 "广播"。 实际上,它将一维向量视为一行数据,并将该向量乘以二维数组的每一行。
因此,它用矩阵的第1行乘以矢量,按元素计算。然后用矩阵的第2行乘以该向量。 以此类推。
请记住,当你这样做时,向量必须有一个形状,以便它可以在矩阵上播放。
在本教程中,我已经解释了如何在Numpy中用np.multiply进行数组相乘。
这应该对你的数组乘法有所帮助,但如果你真的想学习Numpy,还有很多东西要学。