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) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |