numpy 如何索引排序
时间: 2024-10-17 15:07:24 浏览: 25
NumPy排序的实现
NumPy库是一个强大的Python科学计算工具,它提供了一个高性能的数组结构以及用于处理这些数组的各种函数。在NumPy中,对数组进行索引和排序是非常常见的操作。
**索引:**
1. **基本索引** - 使用方括号`[]`来获取数组的元素,可以指定单个索引、切片或者布尔数组来选择特定元素。例如:
```python
import numpy as np
arr = np.array([1, 4, 7, 9])
print(arr[0]) # 输出第一个元素,即1
print(arr[1:3]) # 输出从第二个到第三个元素组成的子数组
print(arr[arr > 5]) # 输出大于5的所有元素
```
2. **高级索引** - NumPy支持多维数组的高级索引,如整数数组或多维布尔索引。例如:
```python
multi_dim_arr = np.array([[1, 2], [3, 4]])
print(multi_dim_arr[[0, 1], [1]]) # 输出第二列的值
```
**排序:**
NumPy提供了`argsort()`函数来对数组进行排序,并返回排序后的元素的索引。如果你想直接改变原数组的顺序,可以结合使用`sort()`方法:
```python
arr = np.array([3, 1, 4, 1, 5, 9])
sorted_indices = np.argsort(arr) # 获取排序后的索引
print(sorted_indices) # 输出:[1 0 3 2 4 5]
arr_sorted = arr[sorted_indices] # 按照排序后的索引重新排列数组
```
如果你想按照降序排列,可以加上`[::-1]`:
```python
arr_descending = arr[np.argsort(-arr)] # 对数组按降序排序
```
阅读全文