自学内容网 自学内容网

NumPy矩阵逐元素相乘与矩阵乘法

1. 广播机制

NumPy中的广播机制是一种非常强大的功能,可以允许不同形状的数组进行运算。广播机制使得数组的运算更加灵活、简洁,避免了手动调整数组形状的需求。但是,广播机制尤其使用的条件,什么时候两个不同形状的数组可以直接进行运算,什么时候又不能,有些老手有时候也需要稍微停顿、思考。 

2. 符号定义

A = \begin{bmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \end{bmatrix}

b = \begin{bmatrix} b_{1} & b_{2} \\ \end{bmatrix} 

3. sum(A*b, -1)

3.1. 原理

numpy.array的运算*表示矩阵逐元素相乘

A * b = \begin{bmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \end{bmatrix} * \begin{bmatrix} b_{1} & b_{2} \\ \end{bmatrix} \\ = \begin{bmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \end{bmatrix} * \begin{bmatrix} b_{1} & b_{2} \\ b_{1} & b_{2} \\ \end{bmatrix} \\ = \begin{bmatrix} a_{11} b_{1} & a_{12} b_{2} \\ a_{21} b_{1} & a_{22} b_{2} \end{bmatrix} \\

3.2. 代码

# 创建两个形状不同的多维数组
A = np.array([[1, 2],
              [3, 4]])
b = np.array([2, 3])

# 使用广播机制进行数组加法
result1 = np.sum(A * b, axis=-1)
print(result1)

result2 = b @ A.T
print(result2)

两个打印结果是相同的

4. sum(b*A,-1)

4.1. 原理

b * A = \begin{bmatrix} b_{1} & b_{2} \\ \end{bmatrix} * \begin{bmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \end{bmatrix} \\ = \begin{bmatrix} b_{1} & b_{2} \\ b_{1} & b_{2} \\ \end{bmatrix} * \begin{bmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \end{bmatrix} \\ = \begin{bmatrix} a_{11} b_{1} & a_{12} b_{2} \\ a_{21} b_{1} & a_{22} b_{2} \end{bmatrix} \\

4.2. 代码

# 创建两个形状不同的多维数组
A = np.array([[1, 2],
              [3, 4]])
b = np.array([2, 3])

# 使用广播机制进行数组加法
result1 = np.sum(b * A, axis=-1)
print(result1)

result2 = b @ A.T
print(result2)

两个打印结果是相同的

5. sum(A*b', -1)

numpy.array的运算*表示矩阵逐元素相乘

A * b' = \begin{bmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \end{bmatrix} * \begin{bmatrix} b_{1} \\ b_{2} \\ \end{bmatrix} \\ = \begin{bmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \end{bmatrix} *\begin{bmatrix} b_{1} & b_{1} \\ b_{2} & b_{2} \\ \end{bmatrix} \\ = \begin{bmatrix} a_{11} b_{1} & a_{12} b_{1} \\ a_{21} b_{2} & a_{22} b_{2} \end{bmatrix} \\


原文地址:https://blog.csdn.net/xhtchina/article/details/145280686

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