我很难拼凑一些逻辑来按唯一出现的次数对 numpy 记录数组进行排序,这样第一条记录出现的频率最高,最后一条记录的出现频率最低。
考虑四个重复的记录:
import numpy as np
ar = np.array([('A', 1), ('B', 3), ('A', 2), ('B', 3)],
dtype=[('c1', '|S1'), ('c2', 'i')])
我的理想结果是这样的:
[('B', 3) ('A', 1) ('A', 2)]
(对于 SQL 爱好者SELECT c1, c2 FROM ar GROUP BY c1, c2 ORDER BY count(*) DESC;
:)
这是我尝试使用的np.unique
和np.bincount
:
uar, inv = np.unique(ar, return_inverse=True)
print uar # [('A', 1) ('A', 2) ('B', 3)]
print inv # [0 2 1 2]
print np.bincount(inv) # [1 1 2]
但这就是我在拼凑任何逻辑以uar
根据从np.bincount
.