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'的值。

在输出中,显示了矩阵乘积作为数组。

标签: NumPy, NumPy教程, NumPy学习, NumPy安装, NumPy入门教程, NumPy进阶教程, NumPy指南, NumPy学习指南, NumPy库, NumPy库学习, NumPy库入门, NumPy库教程, NumPy应用, NumPy库进阶