如何以完全向量化的方式确定多行中的行相等?

我有一个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)
点赞