NumPy numpy.dot()的使用
Python的numpy模块提供了一个函数来执行两个数组的点积。
- 如果数组’a’和’b’都是一维数组,dot()函数执行向量的内积(不进行复共轭)。
- 如果数组’a’和’b’都是二维数组,dot()函数执行矩阵乘法。但是对于矩阵乘法,推荐使用 matmul 或 ‘a’ @ ‘b’ 。
- 如果’a’或’b’为0维(标量),dot()函数执行乘法。此外,推荐使用 numpy.multiply(a, b) 或 a *b 方法。
- 如果’a’是一个N维数组,并且’b’是一个一维数组,则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”都是标量或一维的,则此函数返回一个标量;否则,返回一个数组。如果给出了“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库。
- 我们创建了两个二维数组 ‘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’的值。
从输出来看,它将矩阵乘积显示为一个数组。