NumPy dot() 函数用于执行两个数组的点积。具体来说,
- 如果a和b都是一维数组,则它是向量的内积(没有复共轭)。
- 如果a和b都是2- D 数组,是矩阵乘法,但优先使用 matmul 或 a @ b。
- 如果 a 或 b 是 0-D(标量),则相当于乘法并使用 numpy.multiply(a , b) 或 a * b 是首选。
- 如果 a 是 N 维数组,b 是一维数组,则它是 a 和 b 最后一个轴上的和积。
- 如果 a 是 N 维数组,b 是 M 维数组(其中 M>=2),则它是 a 的最后一个轴与 b 的倒数第二个轴的和积:
dot(a, b)[i,j,k,m] = sum(a[i,j,:] * b[k,:,m])
语法
numpy.dot(a, b, out=None)
参数
a | 必填。 指定第一个类似数组的参数。 |
b | 必需。 指定第二个类似数组的参数。 |
out | 可选。 指定存储结果的位置。如果提供,它必须具有正确的类型,必须是 C 连续的,并且其数据类型必须是为点(a,b) 返回的数据类型。 |
返回值
返回a和b的点积。如果 a 和 b 都是标量或都是一维数组,则返回标量;否则返回一个数组。如果给出了 out,则返回它。
异常
如果 a 的最后一个维度与第二个维度的大小不同,则引发 ValueError 异常-b 的最后一个维度。
示例:带有标量的 dot() 函数
下面的示例显示了 dot() 与两个标量一起使用时的结果 函数。
import numpy as np
print(np.dot(5, 10))
上述代码的输出将是:
50
示例:具有一维数组的 dot() 函数
当使用两个一维数组时,该函数返回数组的内积。
import numpy as np
Arr1 = [5, 8]
Arr2 = [10, 20]
#返回 5*10 + 8*20 = 210
print(np.dot(Arr1, Arr2))
上述代码的输出将是:
210
示例:处理复数的 dot() 函数
dot() 函数可用于处理复数。考虑以下示例。
import numpy as np
Arr1 = np.array([1+2j, 1+3j])
Arr2 = np.array([2+2j, 2+3j])
Arr3 = np.dot(Arr1, Arr2)
print(Arr3)
上述代码的输出将为:
(-9+15j)
点积计算如下:
= (1+2j)*(2+2j) + (1+3j)*(2+3j)
= (-2+6j) + (-7+9j)
= (-9+15j)
示例:带有矩阵的 dot() 函数
当使用两个矩阵时,该函数返回矩阵乘法。
import numpy as np
Arr1 = np.array([[1, 2],
[3, 4]])
Arr2 = np.array([[10, 20],
[30, 40]])
Arr3 = np.dot(Arr1, Arr2)
print(Arr3)
上述代码的输出将是:
[[ 70 100]
[150 220]]
点积的计算方式为:
[[1*10+2*30 1*20+2*40]
[3*10+4*30 3*20+4*40]]
= [[ 70 100]
[150 220]]