猿问

np.argsort() 的奇怪/错误输出

我正在使用 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)


千万里不及你
浏览 508回答 1
1回答

HUWWW

我认为问题在于您认为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。
随时随地看视频慕课网APP

相关分类

Python
我要回答