numpy 如何按列计算每个唯一元素的出现次数?

n3schb8v  于 2023-08-05  发布在  其他
关注(0)|答案(1)|浏览(93)

我有一个二维数组,并希望得到的所有唯一的数字的出现列。
下面是一个例子:

import numpy as np

a = np.array([[2,2,3,3],
              [2,3,3,3],
              [3,3,4,4]])

字符串
结果应该是

[[2,1,0,0],
 [1,2,2,2],
 [0,0,1,1]])


例如,第一行是每列中出现的数字2,0表示2不在第三和第四列中。第二行是数字3的出现,而最后一行是数字4。简单地说,我想得到每个排序的唯一值的每列计数。
我尝试了np.unique(a, return_counts=True, axis=0),但得到了错误的结果:

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

w7t8yxp5

w7t8yxp51#

您可以在数组上使用np.unique来获得整个矩阵中的非重复值列表。然后将唯一值与广播中的原始矩阵进行比较,并对匹配进行求和:

import numpy as np

a = np.array([[2,2,3,3],
              [2,3,3,3],
              [3,3,4,4]])

(np.unique(a)[:,None,None]==a).sum(axis=1)

[[2 1 0 0]
 [1 2 2 2]
 [0 0 1 1]]

字符串

相关问题