如何实现不坍缩矩阵的类numpy.dot()逐行元素相乘?
解决方案:Numpy实现向量与矩阵按行逐元素相乘
你需要的是将向量a的每个元素对应乘以矩阵b的整行,这可以通过Numpy的广播机制高效实现,完全不需要循环,适合处理大规模数据。
核心实现方法
利用广播,先将一维向量a转换为列向量(增加一个维度),再与矩阵b做元素-wise乘法:
import numpy as np a = np.array([-1, 2, 1]) b = np.array([[1,2,3],[4,5,6],[7,8,9]]) # 方法1:用np.newaxis扩展维度 result = a[:, np.newaxis] * b # 方法2:用reshape扩展维度(更直观) result = a.reshape(-1, 1) * b # 方法3:用None替代np.newaxis(语法糖) result = a[:, None] * b
验证结果
运行上述代码后,result的值为:
array([[-1, -2, -3], [ 8, 10, 12], [ 7, 8, 9]])
完全符合你的预期。
效率说明
这些方法都是Numpy的矢量化操作,底层由C语言实现,没有Python循环的额外开销,即使n非常大(比如上万级),也能保持高效运算。
内容的提问来源于stack exchange,提问作者Albannach5446
相关产品推荐
相关产品推荐

