我正在使用 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)每个列表的前 4 个值对我来说非常清楚 -argsort做对了。但是最后 2 个值非常令人困惑,因为它对值进行了排序错误。不应该是输出argsort:array([[0, 0, 0, 0, 2, 1], [2, 1, 1, 1, 0, 2], [1, 2, 2, 2, 1, 0]], dtype=int64)
1 回答
HUWWW
TA贡献1874条经验 获得超12个赞
我认为问题在于您认为argsort输出的内容。让我们关注一个更简单的一维示例:
arr = np.array([5, 10, 4])
的结果np.argsort将是来自原始数组的索引,以使元素排序:
[2, 0, 1]
让我们看一下实际的排序值是什么,以了解原因:
[
4, # at index 2 in the original array
5, # at index 0 in the original array
10, # at index 1 in the original array
]
似乎您正在想象逆运算, whereargsort将告诉您每个元素将移动到输出中的哪个索引。您可以通过应用argsort的结果来获得这些索引argsort。
添加回答
举报
0/150
提交
取消