我正在使用 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 個值非常令人困惑,因為它對值進(jìn)行了排序錯誤。不應(yīng)該是輸出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貢獻(xiàn)1874條經(jīng)驗 獲得超12個贊
我認(rèn)為問題在于您認(rèn)為argsort輸出的內(nèi)容。讓我們關(guān)注一個更簡單的一維示例:
arr = np.array([5, 10, 4])
的結(jié)果np.argsort將是來自原始數(shù)組的索引,以使元素排序:
[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
]
似乎您正在想象逆運(yùn)算, whereargsort將告訴您每個元素將移動到輸出中的哪個索引。您可以通過應(yīng)用argsort的結(jié)果來獲得這些索引argsort。
添加回答
舉報
0/150
提交
取消