如何使用Numpy生成指定多维矩阵,实现A元素与B矩阵的批量乘积运算
实现方法
你需要的效果可以通过NumPy的广播机制实现,对应你给出的示例输出,代码如下:
import numpy as np A = np.array([ [1, 1], [2, 2], ]) B = np.array([ [0.5, 0.3], [0.1, 0.6], ]) # 得到你示例中结构的C,形状为(2, 2, 2) C = A[:, 0, np.newaxis, np.newaxis] * B # 如果你需要A中每个元素都独立乘以完整B矩阵,最终得到(2, 2, 2, 2)的全量结果,用下面的写法 # C_full = A[..., np.newaxis, np.newaxis] * B
打印C可以得到和你期望完全一致的结果:
array([[[0.5, 0.3], [0.1, 0.6]], [[1. , 0.6], [0.2, 1.2]]])
原理解释
A[:, 0]提取了A的第一列,得到数组[1, 2],形状为(2,)- 加两个
np.newaxis是把维度扩展为(2, 1, 1),和形状为(2,2)的B做乘法时会自动触发广播,自动把1、2两个值分别和完整的B矩阵相乘,最终得到你需要的结构。
内容的提问来源于stack exchange,提问作者kabi994
相关产品推荐
相关产品推荐

