python - 对 x_i + x_k 的 k≠i 求和

标签 python arrays numpy

在 Python 中,我有一个值 xi 的 numpy 数组 X,我想创建一个数组 F,其中每个条目都是对 X 的所有其他条目求和。

然后 F 看起来像这样:

F= np.array[(x2+x3+...+xn),(x1+x3+...+xn),...,(x1+x2+...+xn-1)]

这是使用 for 循环:

import numpy as np
X=np.array[a,b,c,d,e,f,g]
F=np.zeros_like(X)
for i,f in enumerate(F):
    f = sum(np.delete(i,F))

有没有办法在不显式使用 for 循环的情况下做一些 numpy 魔术?

如果等式变得更复杂会怎样

F= np.array[(x2+x3+...+xn)^2+x1,(x1+x3+...+xn)^2+x2,...,(x1+x2+...+xn-1)^2+xn]

如果是for循环

import numpy as np
X=np.array[a,b,c,d,e,f,g]
F=np.zeros_like(X)
for i,f in enumerate(F):
    f = sum(np.delete(i,F))**2+X[i]

最佳答案

简单地说,x.sum() - x:

>>> x
array([0, 3, 1, 8, 3, 5, 6, 3, 8, 1])
>>> x.sum()
38
>>> x.sum() - x
array([38, 35, 37, 30, 35, 33, 32, 35, 30, 37])

对于另一个方程,每个分量等于:

(sum(x) - x(i))^2 + x(i) == sum(x)^2 + x(i)^2 - 2 * x(i) * sum(x) + x(i)

因此您仍然可以将其写成矢量化形式,如:

>>> acc = x.sum()
>>> acc**2 + x**2 - 2 * x * acc + x

关于python - 对 x_i + x_k 的 k≠i 求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33847481/

相关文章:

Python 和 MySql,将数据插入到通过外键连接的两个表中的替代方法

python - 使用多个进程在python中计算pi

python - 计算网格上两点之间恰好有 `n` 个节点的最短路径

python - lambdify 可以返回 dtype np.float128 的数组吗?

python - 从 ValuesQuerySet 访问值

java - BufferedReader - 打印整个输出

c - 如何在函数中传递指针?

java - 根据键将映射中的值相互合并

javascript - array.push 在 FF 中不起作用,但在 Chrome 中起作用......有什么想法吗?

python - 打印不带分隔符(括号、引号和逗号)的字符串数组