You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Numpy向量化操作替代循环实现矩阵与向量元素逐次相乘?

用Numpy向量化运算替代for循环实现矩阵与向量元素的批量相乘

你可以利用Numpy的广播机制实现无循环的向量化运算,这比Python层面的for循环效率高得多,尤其适合处理大规模数据场景。

解决方案代码

import numpy as np

a = np.ones(9).reshape(3,3)
b = np.ones(6390)

# 调整向量b的维度,触发广播机制与矩阵a相乘
c = a * b.reshape(-1, 1, 1)

print("a = ", a.shape)
print("b = ", b.shape)
print("c = ", c.shape)

运行结果

a =  (3, 3)
b =  (6390,)
c =  (6390, 3, 3)

原理说明

Numpy的广播规则会自动扩展维度匹配的数组:

  • 将b从形状(6390,)调整为(6390, 1, 1),reshape(-1,1,1)中的-1表示让Numpy自动计算该维度的长度
  • 矩阵a的形状是(3,3),广播会自动将其扩展为(6390, 3, 3),与调整后的b维度完全匹配
  • 此时执行元素级相乘,每个b[i]会和整个a矩阵的所有元素相乘,最终得到和原for循环完全一致的三维数组

你也可以用np.expand_dims来添加维度,效果完全相同:

b_expanded = np.expand_dims(np.expand_dims(b, axis=1), axis=2)
c = a * b_expanded

内容的提问来源于stack exchange,提问作者장민규

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 08:30:48