数据处理与统计分析——03-Numpy的np.dot()方法&点积与矩阵乘法
np.dot()
np.dot()
在 NumPy 中既可以用于向量的点积,也可以用于矩阵乘法,这两种运算的本质不同,取决于输入是向量还是矩阵。
1. 点积 (Dot Product)
定义
当 np.dot()
的输入是两个一维向量时,计算的是点积,即两个向量的对应元素相乘 并求和
,结果是一个标量。
公式
对于两个 n维 向量 a=[a1, a2, …, an] 和
b=[b1, b2, …, bn]
点积的计算公式为: a⋅b=a1*b1 + a2*b2 + ⋯ + an*bn 结果是一个标量。
几何解释: 点积反应了两个向量的 相似性, 特别是它和 向量夹角 有关. 如果点积为0, 说明两个向量正交(垂直).
示例
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
# 点积
result = np.dot(a, b)# 计算点积
print(result) # 输出: 32
在这个例子中,np.dot(a, b)
是向量的点积,结果是 1*4 + 2*5 + 3*6 = 32
,这是一个标量。
2. 矩阵乘法 (Matrix Multiplication)
当 np.dot()
的输入是两个二维数组(矩阵)*时,执行的是*矩阵乘法。矩阵乘法与点积不同,它遵循行与列的乘积规则,即将第一个矩阵的行向量
与第二个矩阵的列向量
进行点积
,结果是一个新的矩阵。**
公式
对于矩阵 A 和矩阵 B,如果 A 是 m*n
矩阵,B 是 n*p
矩阵,那么它们的矩阵乘法 C=A⋅BC 将是一个 m*p 的矩阵,公式如下:
C
i
j
=
∑
k
=
1
n
A
i
k
⋅
B
k
j
C_{ij} = \sum_{k=1}^{n}A_{ik} \cdot B_{kj}
Cij=k=1∑nAik⋅Bkj
其中,Cij 是矩阵 C 中第 i 行第 j 列的元素,它是 A 的第 i 行与 B 的第 j 列的点积。
示例
import numpy as np
x = np.array([[1, 2, 3], [4, 5, 6]])
y = np.array([[6, 23], [-1, 7], [8, 9]])
# 矩阵乘法
result = np.dot(x, y)
print(result)
# 输出
[[ 28 64]
[ 67 181]]
这里 x
是一个 2x3 矩阵,y
是一个 3x2 矩阵,结果是一个 2x2 的矩阵。矩阵乘法将 x
的每一行与 y
的每一列做点积运算。
区别总结
- 点积:
- 作用于一维向量。
- 计算对应元素的乘积之和。
- 结果是一个标量。
- 示例:
np.dot(a, b)
,其中a
和b
是一维向量。
- 矩阵乘法:
- 作用于二维矩阵。
- 计算的是矩阵的行向量与另一矩阵的列向量的点积。
- 结果是一个矩阵。
- 示例:
np.dot(x, y)
,其中x
和y
是二维矩阵。
小结
np.dot()
函数的行为取决于输入的数据类型:
- 如果输入是一维数组(即向量),它执行点积,结果是标量。
- 如果输入是二维数组(即矩阵),它执行矩阵乘法,结果是矩阵。
np.dot()
能处理不同维度的数据,并自动选择合适的计算方式。
原文地址:https://blog.csdn.net/m0_74893204/article/details/143781312
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!