假设我有一个包含[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以外的地方开始
作为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]])