为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

千万里不及你 2021-09-25 16:52:58
我正在使用 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。


查看完整回答
反对 回复 2021-09-25
  • 1 回答
  • 0 关注
  • 507 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信