NumPy.dot()与Python中’*’操作的区别

  • Post category:Python

NumPy中的dot函数和Python中的’*’操作有着明显的区别,下面就针对这两个操作进行详细的说明。

NumPy.dot()函数

NumPy库是Python中用于做科学计算的一个重要工具库。在NumPy库中,有一个名为“dot()”的函数,用于计算矩阵乘积。

矩阵的乘积是指两个矩阵相乘得到的新矩阵。假设矩阵 $A$ 的大小是 $m \times n$,矩阵 $B$ 的大小是 $n \times p$,则两个矩阵的乘积 $C$ 的大小为 $m \times p$,其中 $C_{i,j}=\sum_{k=1}^{n}A_{i,k}B_{k,j}$。

下面给出一个使用NumPy库中dot函数计算矩阵乘积的示例:

import numpy as np

A = np.array([[1, 2], [3, 4], [5, 6]])  # 3x2矩阵
B = np.array([[7, 8, 9], [10, 11, 12]])  # 2x3矩阵

C = np.dot(A, B)  # 计算矩阵乘积
print(C)

输出结果为:

[[ 27  30  33]
 [ 61  68  75]
 [ 95 106 117]]

Python中的’*’操作

在Python中,对于两个列表或者数组进行’*’操作,得到的是它们对应位置的元素依次相乘的结果组成的新列表或者数组。例如:

a = [1, 2, 3]
b = [4, 5, 6]

c = [x*y for x, y in zip(a, b)]  # 列表相乘
print(c)

输出结果为:

[4, 10, 18]

需要注意的是,如果对于一个数组进行’*’操作,得到的结果是一个新的数组,而不是一个标量值。例如:

import numpy as np

a = np.array([1, 2, 3])
b = np.array([4, 5, 6])

c = a * b  # 数组相乘
print(c)

输出结果为:

[ 4 10 18]

区别

因此,可以看出,NumPy库中的dot函数计算的是两个矩阵的乘积,得到的是一个新的矩阵。而Python中的’*’操作计算的是两个列表或者数组对应位置元素的乘积,得到的是一个新的列表或者数组。两个操作的含义不同,用法也不同,需要根据具体的需求选择使用哪个操作。