python – 按列在NumPy中对数组进行排序

weixin_38085383 2019-09-12 11:35:52
如何在第n列中对NumPy中的数组进行排序? 例如, a = array([[9, 2, 3], [4, 5, 6], [7, 0, 5]]) 我想按第二列对行进行排序,以便我回来: array([[7, 0, 5], [9, 2, 3], [4, 5, 6]])
...全文
637 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38090696 2019-09-12
  • 打赏
  • 举报
回复 1
@steve‘s实际上是最优雅的做法. 对于“正确”方式,请参阅numpy.ndarray.sort的order关键字参数 但是,您需要将数组视为带有字段的数组(结构化数组). 如果你最初没有用字段定义你的数组,那么“正确”的方式是非常难看的…… 作为一个简单的例子,要对它进行排序并返回一个副本: In [1]: import numpy as np In [2]: a = np.array([[1,2,3],[4,5,6],[0,0,1]]) In [3]: np.sort(a.view('i8,i8,i8'), order=['f1'], axis=0).view(np.int) Out[3]: array([[0, 0, 1], [1, 2, 3], [4, 5, 6]]) 要就地排序: In [6]: a.view('i8,i8,i8').sort(order=['f1'], axis=0) #<-- returns None In [7]: a Out[7]: array([[0, 0, 1], [1, 2, 3], [4, 5, 6]]) 据我所知,@ Steve真的是最优雅的做法… 此方法的唯一优点是“order”参数是用于对搜索进行排序的字段列表.例如,您可以按第二列,然后是第三列,然后通过提供order = [‘f1′,’f2′,’f0’]排序第一列.

473

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧