Numpy 如何在 Python 中按照第二列对 2D 数组(numpy.ndarray)进行排序

您所在的位置:网站首页 argsort函数如何按列排序 Numpy 如何在 Python 中按照第二列对 2D 数组(numpy.ndarray)进行排序

Numpy 如何在 Python 中按照第二列对 2D 数组(numpy.ndarray)进行排序

2024-07-11 23:51| 来源: 网络整理| 查看: 265

Numpy 如何在 Python 中按照第二列对 2D 数组(numpy.ndarray)进行排序

阅读更多:Numpy 教程

引言

在 Python 编程中,有时需要对数组进行排序。利用 Numpy 模块中的排序函数,可以轻松地对数组进行排序。本文将详细介绍如何使用 Numpy 对 2D 数组(numpy.ndarray)进行排序,主要针对的是按照第二列排序。

什么是二维数组?

在 Python 编程中,数组是一组按照特定方式排列的数据。其中,二维数组就是将数组排列成行和列的形式,相对于一维数组,它可以更加有效地管理数据。如下所示:

import numpy as np arr = np.array([[1, 4, 2], [3, 1, 5], [2, 3, 0]]) print(arr)

输出结果:

array([[1, 4, 2], [3, 1, 5], [2, 3, 0]]) 如何排序二维数组?

有两种主要的排序方式——升序(ascending order)和降序(descending order)。在 Python 编程中,可以利用 Numpy 模块中的排序函数 sort() 来实现。根据需要排序的列,选取列表中对应的索引即可。

下面的例子展示了如何按照第二列对 2D 数组进行升序排序:

import numpy as np arr = np.array([[1, 4, 2], [3, 1, 5], [2, 3, 0]]) print("原数组:", arr) indices = arr[:, 1].argsort() # 获取按第二列排序后的索引 print("排序后的索引:", indices) sorted_arr = arr[indices] # 使用索引重新排列原数组 print("按第二列排序后的数组:", sorted_arr)

输出结果:

原数组: [[1 4 2] [3 1 5] [2 3 0]] 排序后的索引: [1 2 0] 按第二列排序后的数组: [[3 1 5] [2 3 0] [1 4 2]]

其中,arr[:,1] 表示取所有行的第二列,argsort() 返回一个按照值排序后的数组索引组成的列表;最后,在原数组 arr 中选取这个排序后的列表中的索引,即可获得按照第二列排序后的数组。

如果要按降序排序,则需要使用[::-1],如下所示:

import numpy as np arr = np.array([[1, 4, 2], [3, 1, 5], [2, 3, 0]]) print("原数组:", arr) indices = (-arr[:, 1]).argsort() # 获取按第二列排序后的索引 print("排序后的索引:", indices) sorted_arr = arr[indices] # 使用索引重新排列原数组 print("按第二列降序排序后的数组:", sorted_arr)

输出结果:

原数组: [[1 4 2] [3 1 5] [2 3 0]] 排序后的索引: [0 2 1] 按第二列降序排序后的数组: [[1 4 2] [2 3 0] [3 1 5]] 总结

本文介绍了如何使用 Numpy 对二维数组按照第二列进行排序的方法。可以通过选取相应的排序方式和列,进行升序或者降序的排序。希望对大家有所帮助!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3