numpy按某一列的值进行排序
时间: 2023-12-14 14:58:45 浏览: 217
可以使用numpy中的argsort函数对某一列的值进行排序,并返回排序后的索引。
例如,对于一个二维数组arr,可以按第2列的值进行排序,可以按如下方式实现:
```python
import numpy as np
# 生成一个随机的二维数组
arr = np.random.randint(0, 10, size=(5, 3))
print("原数组:\n", arr)
# 按第2列的值进行排序,返回排序后的索引
sorted_index = np.argsort(arr[:, 1])
print("排序后的索引:\n", sorted_index)
# 根据排序后的索引重新排列数组
sorted_arr = arr[sorted_index]
print("按第2列排序后的数组:\n", sorted_arr)
```
输出结果:
```
原数组:
[[4 9 9]
[6 3 6]
[2 5 3]
[1 9 8]
[5 2 9]]
排序后的索引:
[4 1 2 0 3]
按第2列排序后的数组:
[[5 2 9]
[6 3 6]
[2 5 3]
[4 9 9]
[1 9 8]]
```
在上述代码中,`argsort`函数对`arr[:, 1]`这一列的值进行排序,并返回排序后的索引`sorted_index`。最后,根据排序后的索引重新排列原数组,得到按第2列排序后的数组。
相关问题
numpy对某一列倒叙排序,同时对某一列正序排序
可以使用numpy中的argsort函数来实现对某一列的排序操作。
对某一列倒序排序:
```python
import numpy as np
# 创建一个二维数组
a = np.array([[3, 2, 1], [6, 5, 4]])
# 对第1列进行倒序排序
idx = np.argsort(-a[:, 1])
a = a[idx]
print(a)
```
输出结果为:
```
[[6 5 4]
[3 2 1]]
```
对某一列正序排序:
```python
import numpy as np
# 创建一个二维数组
a = np.array([[3, 2, 1], [6, 5, 4]])
# 对第1列进行正序排序
idx = np.argsort(a[:, 1])
a = a[idx]
print(a)
```
输出结果为:
```
[[3 2 1]
[6 5 4]]
```
其中,`np.argsort()`默认返回的是排序后的索引值,可以通过这些索引值来重新排列原始数组的行。通过在排序函数中传递`-`符号,可以实现倒序排序。
numpy array根据某一列的值排序
可以使用NumPy中的argsort()函数来根据某一列的值对数组进行排序。假设你有一个二维数组arr,其中第二列包含需要排序的值,可以使用以下代码来对数组进行排序:
```python
import numpy as np
arr = np.array([[3, 2, 4], [1, 6, 3], [7, 4, 2]])
# 按第二列排序
arr_sorted = arr[arr[:,1].argsort()]
print(arr_sorted)
```
输出:
```
array([[3, 2, 4],
[7, 4, 2],
[1, 6, 3]])
```
在这个例子中,我们使用arr[:,1]来选择第二列,并使用argsort()函数来获取排序后的索引。然后我们使用这个索引来重新排列原始数组。
阅读全文