python - 如何按出现对唯一的 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]
对于什么时候a
是np.array
a = np.array([1, 1, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 5])
怎么做?np.array 具有np.unique()
计算每个元素出现的功能,但我不知道如何在这里使用它。
解决方案
您可以使用np.unique
其可选参数return_counts
和return_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])
推荐阅读
- c++ - 只要您不直接访问它包含的值,它是否通过 memcpy 序列化对象表示而不创建安全的对象?
- java - 如何使用 Spring JPA 添加新的数据行
- go - 在子文件夹中调用函数
- python - 如何在我的函数视图中为每个帖子传递一个布尔值?
- macos-catalina - 无法在 Mac OS Catalina 上运行 SQLiteStudio 3.2.1?卡在选择语言
- c - 这是什么类型的函数(带代码的指针函数)?
- html - 如何使元素填充最大值覆盖其水平
- javascript - javascript中的元素删除
- javascript - innerHTML 正在更改输入的值
- list - 如何在 Python 中将列表转换为 DataFrame(币安期货 API)