开发者社区> 问答> 正文

有效地对numpy数组进行降序排序?

令我惊讶的是,以前没有提出过这个具体问题,但是我真的没有在SO或文档上找到它np.sort。

假设我有一个包含整数的随机numpy数组,例如:

temp = np.random.randint(1,10, 10)
temp array([2, 4, 7, 4, 2, 2, 7, 6, 4, 4]) 如果对它进行排序,则默认情况下我将获得升序:

np.sort(temp) array([2, 2, 2, 4, 4, 4, 4, 6, 7, 7]) 但我希望解决方案按降序排序。

现在,我知道我可以永远做:

reverse_order = np.sort(temp)[::-1] 但这最后的陈述有效吗?它不是按升序创建副本,然后反转此副本以反转顺序获得结果吗?如果确实如此,是否有有效的选择?看起来好像不np.sort接受参数来更改排序操作中的比较符号以使事情相反。 问题来源于stack overflow

展开
收起
保持可爱mmm 2020-02-08 11:51:46 852 0
1 条回答
写回答
取消 提交回答
  • temp[::-1].sort()在适当的位置对数组进行排序,而np.sort(temp)[::-1]创建一个新的数组。

    In [25]: temp = np.random.randint(1,10, 10)

    In [26]: temp Out[26]: array([5, 2, 7, 4, 4, 2, 8, 6, 4, 4])

    In [27]: id(temp) Out[27]: 139962713524944

    In [28]: temp[::-1].sort()

    In [29]: temp Out[29]: array([8, 7, 6, 5, 4, 4, 4, 4, 2, 2])

    In [30]: id(temp) Out[30]: 139962713524944

    2020-02-08 11:52:00
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载