如何用单行操作实现Numpy矩阵与一维数组的批量乘法(无循环)
Numpy实现矩阵与一维数组的批量缩放(无循环)
要实现3×2矩阵A和1×4一维数组B的批量相乘,得到4个3×2矩阵组成的4×3×2数组C,直接利用Numpy的广播机制就能一行代码搞定,完全不需要循环:
代码示例
import numpy as np # 定义输入矩阵和数组 A = np.array([[1, 2], [3, 4], [5, 6]]) # 维度(3,2) B = np.array([10, 20, 30, 40]) # 维度(4,) # 单行操作得到目标数组C C = A * B[:, np.newaxis, np.newaxis]
原理说明
通过B[:, np.newaxis, np.newaxis]将一维数组B的维度从(4,)转换为(4,1,1),Numpy的广播规则会自动将A(维度(3,2))扩展为(4,3,2),同时将B扩展为(4,3,2),两者逐元素相乘后,就得到了每个A与对应B元素相乘的结果,最终C的维度为(4,3,2),完全符合需求。
你也可以用reshape实现同样的维度调整,效果一致:
C = A * B.reshape(4, 1, 1)
内容的提问来源于stack exchange,提问作者arty
相关产品推荐
相关产品推荐

