NumPy 函数

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]]