📌  相关文章
📜  PythonNumPy.dot()和'*'操作的区别(1)

📅  最后修改于: 2023-12-03 15:19:13.339000             🧑  作者: Mango

PythonNumPy.dot()和'*'操作的区别

在Python中,我们可以使用NumPy库进行向量和矩阵的运算。在NumPy中,我们可以使用dot()函数和'*'操作符来执行向量和矩阵之间的乘法运算。在本文中,我们将讨论这两种操作之间的区别。

1. dot()函数

NumPy中的dot()函数是用于计算两个向量或矩阵之间的乘积的。它执行的是点积运算和矩阵乘法运算的组合。

点积运算

点积运算的本质是将两个向量相乘并相加。对于两个长度为n的向量a和b,它们的点积计算如下:

a · b = a1b1 + a2b2 + … + an*bn

使用NumPy中的dot()函数计算点积运算如下:

import numpy as np

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

输出结果为:

32
矩阵乘法运算

矩阵乘法运算是将一个矩阵的每一行分别与另一个矩阵的每一列做点积运算后再相加,最终得到一个新的矩阵。

具体来说,设矩阵A的维度为mn,矩阵B的维度为nk,那么它们的乘积矩阵C的维度为m*k,且C中每个元素的计算如下:

C[i][j] = A[i][0]*B[0][j] + A[i][1]*B[1][j] + … + A[i][n-1]*B[n-1][j]

使用NumPy中的dot()函数计算矩阵乘法运算如下:

import numpy as np

A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
C = np.dot(A, B)
print(C)

输出结果为:

[[19, 22],
 [43, 50]]
2. '*'操作符

在NumPy中,'*'操作符用于执行向量和矩阵的逐元素相乘运算。它执行的是逐元素乘法运算,不同于dot()函数。

对于两个长度为n的向量a和b,它们的逐元素相乘运算计算如下:

a * b = [a1b1, a2b2, … , an*bn]

使用'*'操作符执行向量逐元素相乘运算如下:

import numpy as np

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

输出结果为:

[4, 10, 18]

对于两个矩阵A和B的逐元素相乘运算,与向量逐元素相乘运算的方式类似。它们的维度需相同,运算的结果为一个新的矩阵C,C中每个元素的计算如下:

C[i][j] = A[i][j] * B[i][j]

使用'*'操作符执行矩阵逐元素相乘运算如下:

import numpy as np

A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
C = A * B
print(C)

输出结果为:

[[5, 12],
 [21, 32]]
3. 总结

dot()函数和'*'操作符都可用于向量和矩阵的乘法运算。它们之间的区别在于执行的操作不同。

dot()函数执行的是点积运算和矩阵乘法运算,而''操作符执行的是逐元素相乘运算。因此,在进行向量或矩阵乘法运算时,我们需要根据运算的实际需求来选择使用dot()函数或''操作符。