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

求NumPy数组差值计算的无循环向量化实现方案

向量化实现数组差值求和计算

假设有两个长度相同的数组:x = [1,2,3] 和 y = [0,1,2],需要实现的计算为:对每个y[i],求x与y[i]的差的总和。现有循环实现的代码如下:

diff = np.zeros((x.shape[0]))
for i in range(y.shape[0]):
  diff[i] = np.sum(x - y[i])

向量化实现方案

当然存在无需显式循环的向量化实现方式,而且效率远高于循环写法,这里提供两种思路:

1. 数学公式推导优化

先从数学角度拆解计算逻辑:
对任意y[i],np.sum(x - y[i])等价于 np.sum(x) - len(x) * y[i]。
基于这个推导,直接用一行代码就能完成计算:

import numpy as np

x = np.array([1,2,3])
y = np.array([0,1,2])
diff = np.sum(x) - len(x) * y

验证结果:diff最终为[6, 3, 0],和循环实现的结果完全一致。

2. 利用NumPy广播机制

借助NumPy的广播特性,将y转换为列向量后与x做逐元素减法,再按行求和:

diff = (x - y[:, np.newaxis]).sum(axis=1)

这种方式通过自动扩展维度完成批量运算,同样不需要写显式循环。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 05:42:05