NumPy教程-numpy.dot()在Python中的使用
Python的numpy模块提供了一个函数用于执行两个数组的点积。
- 如果数组'a'和'b'都是1维数组,dot()函数执行向量的内积(不包括复共轭)。
- 如果数组'a'和'b'都是2维数组,dot()函数执行矩阵乘法。但是对于矩阵乘法,推荐使用matmul或'a' @ 'b'。
- 如果'a'或'b'中的任一数组是0维(标量),dot()函数执行乘法。同时,推荐使用numpy.multiply(a, b)*或*a * b方法。
- 如果'a'是一个N维数组,'b'是一个1维数组,则dot()函数在a和b的最后一个轴上执行求和乘积。
- 如果'a'是M维数组,'b'是一个N维数组(其中N>=2),则dot()函数在'a'的最后一个轴和'b'的倒数第二个轴上执行求和乘积:
dot(a, b)[i, j, k, n] = sum(a[i, j, :] * b[k, :, n])
语法
numpy.dot(a, b, out=None)
参数
a: array_like
此参数定义了第一个数组。
b: array_like
此参数定义了第二个数组。
out: ndarray(可选)
这是一个输出参数。它应该具有与未使用时返回的种类完全相同。特别是,它应满足性能特征,即必须包含正确的类型,即必须是C连续的,其dtype必须是dot(a,b)返回的dtype。因此,如果不满足这些指定条件,则会引发异常。
返回值
此函数返回'a'和'b'的点积。如果'a'和'b'都是标量或1维数组,则此函数返回标量;否则,它返回数组。如果给定了'out',则将其返回。
引发
当'a'的最后一个维度的大小与'b'的倒数第二个维度的大小不同时,会引发ValueError。
示例1:
import numpy as np
a=np.dot(6,12)
a
输出:
72
示例2:
import numpy as np
a=np.dot([2j, 3j], [5j, 8j])
a
输出:
(-34+0j)
示例3:
import numpy as np
a = [[1, 2], [4, 1]]
b = [[4, 11], [2, 3]]
c=np.dot(a, b)
c
输出:
array([[ 8, 17],
[18, 47]])
在上面的代码中
- 我们使用别名np导入了numpy。
- 我们创建了两个2维数组'a'和'b'。
- 我们声明了变量'c'并赋值为np.dot()函数的返回值。
- 最后,我们尝试打印变量'c'的值。
在输出中,显示了矩阵乘积作为数组。
示例4:
import numpy as np
x = np.arange(3*4*5*6).reshape((3,4,5,6))
y = np.arange(3*4*5*6)[::-1].reshape((5,4,6,3))
p=np.dot(a, b)[2,3,2,1,2,2]
q=sum(a[2,3,2,:] * b[1,2,:,2])
p
q
输出:
499128
499128
在上面的代码中
- 我们使用别名np导入了numpy。
- 我们使用np.arange()函数创建了两个数组'a'和'b',并使用reshape()函数改变了这两个数组的形状。
- 我们声明了变量'c'并赋值为np.dot()函数的返回值。
- 最后,我们尝试打印变量'c'的值。
在输出中,显示了矩阵乘积作为数组。