python二维数组排序argsort
时间: 2025-06-27 21:02:59 浏览: 15
### Python 中对二维数组进行排序以及 `argsort` 函数的用法
在 Python 的 NumPy 库中,`argsort()` 是一个非常有用的函数,它返回的是数组值从小到大排序后的索引位置。下面详细介绍如何使用该函数来对二维数组进行排序。
#### 什么是 `argsort()`
`argsort()` 返回的是沿指定轴排序后的索引值。如果是一个一维数组,则会返回一个新的数组,其中包含了原数组中小到大的排列顺序所对应的原始下标;如果是多维数组,则可以根据不同的维度来进行操作[^1]。
#### 示例代码展示
以下是通过 `argsort()` 对二维数组按照列或者行进行排序的具体实现:
```python
import numpy as np
# 定义一个二维数组
data = np.array([[1, 2, 3, 4, 5],
[1, 2, 3, 6, 7],
[2, 3, 4, 5, 7],
[3, 4, 5, 6, 7],
[4, 5, 6, 7, 8]])
# 获取每一列排序后的索引
sorted_indices_by_col = np.argsort(data, axis=0)
print("每列排序后的索引:")
print(sorted_indices_by_col)
# 根据这些索引来获取实际排序后的数值 (按列)
sorted_data_by_col = np.take_along_axis(data, sorted_indices_by_col, axis=0)
print("\n按列排序后的数据:")
print(sorted_data_by_col)
# 如果想得到按照行排序的结果
sorted_indices_by_row = np.argsort(data, axis=1)
print("\n每行列排序后的索引:")
print(sorted_indices_by_row)
# 同样可以通过 take_along_axis 来获得具体的数据
sorted_data_by_row = np.take_along_axis(data, sorted_indices_by_row[:, :, None], axis=1).squeeze()
print("\n按行排序后的数据:")
print(sorted_data_by_row)
```
上述程序展示了两种情况下的排序过程:一种是对各列分别排序,另一种则是针对各行单独处理。
#### 关于填充二维数组的方法补充说明
除了排序之外,在某些场景下还需要向已有的二维数组添加新元素或扩展其大小。这通常可以借助 NumPy 提供的功能完成,比如利用 `vstack`, `hstack` 或者其他类似的工具[^4]。
例如:
```python
import numpy as np
array = np.array([0, 0])
for i in range(10):
array = np.vstack((array, [i+1, i+1]))
print(array)
```
此段脚本演示了怎样逐步构建起更大的二维结构体[^2]。
另外值得注意的一点是关于查找最大最小值的问题,同样能够依赖内置功能轻松达成目的[^5]。
---
阅读全文
相关推荐


















