我有一个numpy.ndarray叫做大小分组(S,N).每行分组为我提供了数据样本的组标签.我运行我的算法S次并在每次迭代中获得新的组标签.
我想确定我的数据的每个样本与完全向量化的S迭代中的每个其他数据样本具有相同的组标签的次数.
以非完全向量化的方式:
sim_matrix = np.zeros((N, N))
for s in range(S):
sim_matrix += np.equal.outer(grouping[s, :], grouping[s, :])
最佳答案 一种矢量化方法将是
broadcasting
–
(grouping[:,None,:] == grouping[:,:,None]).sum(0)
为了性能,我们可以使用np.count_nonzero
–
np.count_nonzero(grouping[:,None,:] == grouping[:,:,None],axis=0)