numpy 每个列对的不同元素数

ecbunoof  于 2023-05-22  发布在  其他
关注(0)|答案(2)|浏览(112)

我有一个NumPy数组A,形状为(n, m),dtype为bool

array([[ True, False, False],
       [ True,  True,  True],
       [False,  True,  True],
       [False,  True, False]])

我想得到R的形状(m, m)的dtype int的结果:

array([[0, 3, 2],
       [3, 0, 1],
       [2, 1, 0]])

其中R[i, j]是列ij中不同的元素的数量。例如:

R[0, 0] = (A[:, 0] != A[:, 0]).sum()
R[2, 1] = (A[:, 2] != A[:, 1]).sum()
R[0, 2] = (A[:, 0] != A[:, 2]).sum()
...

有没有办法用NumPy实现这一点?
相关问题:Sum of element wise or on columns triplet

mdfafbf1

mdfafbf11#

是的,这是相当简单的一些广播:

R = (A[:, None, :] != A[:, :, None]).sum(axis=0)
wxclj1h5

wxclj1h52#

也许它会有所帮助:

cols = np.arange(A.shape[1])
R = np.sum(A[:,cols.reshape(-1,1)] != A[:,cols.reshape(1,-1)], axis=0)

相关问题