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

使用numpy vectorize实现矩阵与多向量乘法报错,求解决方案

解决方案

问题原因

np.vectorize并非真正的向量化实现,它本质是循环的封装,默认会将输入数组拆分为标量传递给目标函数。但np.matmul需要多维数组输入,导致维度不匹配,触发错误。

正确实现

无需使用np.vectorize,直接利用numpy原生的批量矩阵乘法能力即可高效完成需求:

假设X、Y、Z均为长度为n的一维数组,先构造形状为(n,3)的向量数组:

vecs = np.column_stack((X, Y, Z))  # 等价于你之前的np.array([X,Y,Z]).transpose()

然后通过以下任意一种方式计算结果:

  1. 利用矩阵乘法转置:
results = (A @ vecs.T).T
  1. 转置矩阵后直接相乘(数学上等价于第一种方式):
results = vecs @ A.T
  1. 新增维度配合广播:
results = (A @ vecs[..., np.newaxis]).squeeze(axis=-1)

以上三种方式得到的results均为(n,3)数组,与你原循环代码的输出完全一致,且效率远高于循环或np.vectorize。

内容的提问来源于stack exchange,提问作者Calvin Tran

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 13:05:06