我有两个numpy数组,A
具有形状(N,3)
和B具有形状(N,)
,我从向量A生成具有唯一项的向量,例如:
A = np.array([[1.,2.,3.],
[4.,5.,6.],
[1.,2.,3.],
[7.,8.,9.]])
B = np.array([10.,33.,15.,17.])
AUnique, directInd, inverseInd, counts = np.unique(A,
return_index = True,
return_inverse = True,
return_counts = True,
axis = 0)
所以AUnique
将是
array([[1., 2., 3.],
[4., 5., 6.],
[7., 8., 9.]])
然后,我获得与AUnique
相关联的simil向量B
,对于A
中的每个非唯一行,我求和该向量中B
的相关值,即:
BNew = B[directInd]
# here BNew is [10., 33.,17]
for Id in np.asarray(counts>1).nonzero()[0]:
BNew[Id] = np.sum(B[inverseInd == Id])
# here BNew is [25., 33.,17]
问题是,对于大N个向量(数百万行或数千万行),for循环变得非常慢,我想知道是否有办法避免循环和/或使代码更快
提前谢谢
我想你可以用
np.bincount
做你想做的事相关问题 更多 >
编程相关推荐