【发布时间】:2021-06-09 18:17:37
【问题描述】:
我需要从以下等式计算向量的元素减去的总和:
sum(y(i) - y(j)) at i!=j
y 以 numpy 数组的形式给出
一种选择是遍历双循环:
dev = 0
for i in range(y.shape[0]):
for j in range(y.shape[0]):
if i == j:
continue
dev += y[i, j] - y[i, j]
这绝对不是最佳解决方案。
如何使用带有 numpy 向量的向量化操作对其进行优化?
【问题讨论】:
-
y[i, j] - y[i, j]将始终为0... 或nan。你到底想要什么?一种笛卡尔减法?y的职业很大吗?否则,您可以做的事情是np.abs(y[:, None] - y[None, :]).sum()/2。 -
这可能是一个不错的code golf