Xin*_*ang 0 python numpy numpy-ndarray
我有一个二维数组,想要按列获取所有唯一数字的出现次数。
这是一个例子:
import numpy as np
a = np.array([[2,2,3,3],
[2,3,3,3],
[3,3,4,4]])
Run Code Online (Sandbox Code Playgroud)
结果应该是
[[2,1,0,0],
[1,2,2,2],
[0,0,1,1]])
Run Code Online (Sandbox Code Playgroud)
例如,第一行是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]))
Run Code Online (Sandbox Code Playgroud)
您可以在数组上使用 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]]
Run Code Online (Sandbox Code Playgroud)