Python技术迷

NumPy教程-numpy.dot()在Python中的使用

整理: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',则将其返回。

专属福利 

👉点击领取:最全Python资料合集

引发

当'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  
输出:
499128499128
在上面的代码中
  • 我们使用别名np导入了numpy。

  • 我们使用np.arange()函数创建了两个数组'a'和'b',并使用reshape()函数改变了这两个数组的形状。

  • 我们声明了变量'c'并赋值为np.dot()函数的返回值。

  • 最后,我们尝试打印变量'c'的值。

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

Image
 1
Image
热门推荐
Image