自学内容网 自学内容网

数据处理与统计分析——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=1nAikBkj

其中,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),其中 ab 是一维向量。
  • 矩阵乘法
    • 作用于二维矩阵
    • 计算的是矩阵的行向量与另一矩阵的列向量的点积。
    • 结果是一个矩阵
    • 示例:np.dot(x, y),其中 xy 是二维矩阵。

小结

np.dot() 函数的行为取决于输入的数据类型:

  • 如果输入是一维数组(即向量),它执行点积,结果是标量。
  • 如果输入是二维数组(即矩阵),它执行矩阵乘法,结果是矩阵。

np.dot() 能处理不同维度的数据,并自动选择合适的计算方式。


原文地址:https://blog.csdn.net/m0_74893204/article/details/143781312

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!