我正在使用 numpy 和 argsort,同时遇到argsort 的奇怪(?)行为:
>>> array = [[0, 1, 2, 3, 4, 5],
[444, 4, 8, 3, 1, 10],
[2, 5, 8, 999, 1, 4]]
>>> np.argsort(array, axis=0)
array([[0, 0, 0, 0, 1, 2],
[2, 1, 1, 1, 2, 0],
[1, 2, 2, 2, 0, 1]], dtype=int64)
Run Code Online (Sandbox Code Playgroud)
每个列表的前 4 个值对我来说非常清楚 -argsort正确地完成工作。但最后两个值非常令人困惑,因为它对值的排序有点错误。
的输出不应该argsort是:
array([[0, 0, 0, 0, 2, 1],
[2, 1, 1, 1, 0, 2],
[1, 2, 2, 2, 1, 0]], dtype=int64)
Run Code Online (Sandbox Code Playgroud)
我认为问题出在你认为argsort输出的内容上。让我们关注一个更简单的一维示例:
arr = np.array([5, 10, 4])
Run Code Online (Sandbox Code Playgroud)
的结果np.argsort将是原始数组中用于对元素进行排序的索引:
[2, 0, 1]
Run Code Online (Sandbox Code Playgroud)
让我们看看实际的排序值是什么,以了解原因:
[
4, # at index 2 in the original array
5, # at index 0 in the original array
10, # at index 1 in the original array
]
Run Code Online (Sandbox Code Playgroud)
看起来您正在想象逆运算,其中argsort将告诉您每个元素将移动到输出中的哪个索引。argsort您可以通过应用的结果来获得这些索引argsort。
| 归档时间: |
|
| 查看次数: |
856 次 |
| 最近记录: |