我试图找出如何(使用NumPy)最有效地计算一维ndarray (在本例中为f)的下列表达式:

我想我可以这样做:
f = [ 1, 3, 2, 3, 7, 5, 2]
for i in range(0, len(f-1)):
for j in range(0, len(f-2)):
...但这意味着,如果我正确理解列表中的每个元素,就必须有一个条件循环。有更好的方法吗?
谢谢您的提示!
发布于 2020-08-27 12:27:38
您可以利用numpy广播:
f = np.array([ 1, 3, 2, 3, 7, 5, 2])
np.triu(f[:,None]-f).sum()或同样:
np.tril(f-f[:,None]).sum()产出:
-24发布于 2020-08-27 12:30:48
你可以试试这个
f = [ 1, 2, 3, 4]
combined = 0
for i in range(0, len(f)):
for j in range(i+1, len(f)):
combined += f[i]-f[j]你用我作为你内心循环的起点。这样你就不需要条件了。
发布于 2020-08-27 12:34:38
这不使用Numpy,但如果需要,只需使用列表切片并执行如下操作
def partial_sum(lst,i, j):
return sum(lst[i:j])https://stackoverflow.com/questions/63615852
复制相似问题