如何通过允许重复和总和强度值来减少空间点的numpy数组

问题描述 投票:3回答:1

假设我有一个包含[x,y,z,intensity]数组的numpy数组:

MyArray=np.array([np.array([1,2,3,.75]),np.array([1,2,2,.32]),np.array([1,2,3,.88])])

如何在重复发生时对强度值求和时,如何将阵列减少到唯一点?

所以上面的最终结果如下:

EndArray=np.array([np.array([1,2,3,1.63]),np.array([1,2,2,.32])])

我正在考虑在x,y,z上使用numpy.unique,但这将给出整数唯一性计数,而不考虑强度列。

我很抱歉这里缺少代码,但老实说,我甚至不知道从np.unique以外的地方开始

python numpy
1个回答
3
投票

作为NumPy标记/处理NumPy数组,我们可以使用np.unique的新功能接受axis参数来处理2D数组作为组,为我们提供预期的输出,如下所示 -

In [51]: unq, tags = np.unique(MyArray[:,:3],axis=0, return_inverse=1)

In [52]: np.c_[unq,np.bincount(tags, MyArray[:,3])]
Out[52]: 
array([[ 1.  ,  2.  ,  2.  ,  0.32],
       [ 1.  ,  2.  ,  3.  ,  1.63]])
© www.soinside.com 2019 - 2024. All rights reserved.