首页 > 解决方案 > 如何按出现对唯一的 np 数组元素进行排序?

问题描述

我想实现以下代码:

a = [1, 1, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 5]
sorted(a,key=a.count,reverse=True)
>>> [5, 5, 5, 5, 3, 3, 3, 4, 4, 4, 1, 1, 2]

对于什么时候anp.array

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

怎么做?np.array 具有np.unique()计算每个元素出现的功能,但我不知道如何在这里使用它。

标签: pythonpython-3.xnumpysorting

解决方案


您可以使用np.unique其可选参数return_countsreturn_inverse-

u, ids, c = np.unique(a, return_counts=True, return_inverse=True)
out = a[c[ids].argsort()[::-1]]

样品运行 -

In [90]: a = np.array([1, 1, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 5])

In [91]: u, ids, c = np.unique(a, return_counts=True, return_inverse=1)

In [92]: a[c[ids].argsort()[::-1]]
Out[92]: array([5, 5, 5, 5, 4, 4, 4, 3, 3, 3, 1, 1, 2])

推荐阅读