首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Numpy:索引i<j的一维数组之和

Numpy:索引i<j的一维数组之和
EN

Stack Overflow用户
提问于 2020-08-27 12:19:41
回答 3查看 258关注 0票数 2

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

我想我可以这样做:

代码语言:javascript
复制
f = [ 1, 3, 2, 3, 7, 5, 2]
for i in range(0, len(f-1)):
    for j in range(0, len(f-2)):
        ...

但这意味着,如果我正确理解列表中的每个元素,就必须有一个条件循环。有更好的方法吗?

谢谢您的提示!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-08-27 12:27:38

您可以利用numpy广播:

代码语言:javascript
复制
f = np.array([ 1, 3, 2, 3, 7, 5, 2])
np.triu(f[:,None]-f).sum()

或同样:

代码语言:javascript
复制
np.tril(f-f[:,None]).sum()

产出:

代码语言:javascript
复制
-24
票数 4
EN

Stack Overflow用户

发布于 2020-08-27 12:30:48

你可以试试这个

代码语言:javascript
复制
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]

你用我作为你内心循环的起点。这样你就不需要条件了。

票数 1
EN

Stack Overflow用户

发布于 2020-08-27 12:34:38

这不使用Numpy,但如果需要,只需使用列表切片并执行如下操作

代码语言:javascript
复制
def partial_sum(lst,i, j):
    return sum(lst[i:j])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63615852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档