加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – NumPy总和不相交的索引

发布时间:2020-12-20 12:09:11 所属栏目:Python 来源:网络整理
导读:我有一个应用程序,我需要在3D NumPy数组中的任意索引组之间求和.内置的NumPy数组求和例程总结了ndarray的一个维度上的所有索引.相反,我需要总结我的数组中的一个维度的索引范围并返回一个新数组. 例如,假设我有一个形状为ndarray(70,25,3).我希望总结某些索
我有一个应用程序,我需要在3D NumPy数组中的任意索引组之间求和.内置的NumPy数组求和例程总结了ndarray的一个维度上的所有索引.相反,我需要总结我的数组中的一个维度的索引范围并返回一个新数组.

例如,假设我有一个形状为ndarray(70,25,3).我希望总结某些索引范围的第一个维度并返回一个新的3D数组.考虑从0:25,25:50和50:75的总和,它将返回一个形状数组(3,3).

有没有一种简单的方法可以在NumPy数组的一个维度上做“不相交的总和”来产生这个结果?

解决方法

您可以使用np.add.reduceat作为此问题的一般方法.即使范围的长度不同,这也适用.

要沿着0轴对切片0:25,25:50和50:75求和,请传入索引[0,50]:

np.add.reduceat(a,[0,50],axis=0)

此方法也可用于求和非连续范围.例如,要将切片0:25,37:47和51:75相加,请写:

np.add.reduceat(a,37,47,51],axis=0)[::2]

对相同长度的范围求和的另一种方法是重新整形阵列,然后沿轴求和.与上面第一个例子相同的是:

a.reshape(3,a.shape[0]//3,a.shape[1],a.shape[2]).sum(axis=1)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读