排序
# 常用函数
sort(a[, axis, kind, order])
返回数组的排序副本
ndarray.sort([axis, kind, order])
就地对数组进行排序
lexsort(keys[, axis])
使用一系列键执行间接排序
argsort(a[, axis, kind, order])
返回对数组进行排序的索引
msort(a)
返回沿第一个轴排序的数组副本
sort_complex(a)
首先使用实部对复杂数组进行排序,然后使用虚部进行排序
partition(a, kth[, axis, kind, order])
返回数组的分区副本
argpartition(a, kth[, axis, kind, order])
使用 kind 关键字指定的算法沿给定轴执行间接分区
import numpy as np
arr1 = np.random.randn(10)
arr1
1
2
3
4
2
3
4
array([ 0.99718196, -0.00798806, -0.07844104, -0.82692313, -1.8169914 ,
-0.69359315, -0.16177984, -0.25790262, -0.05392797, -1.22289349])
np.sort(arr1)
1
array([-1.8169914 , -1.22289349, -0.82692313, -0.69359315, -0.25790262,
-0.16177984, -0.07844104, -0.05392797, -0.00798806, 0.99718196])
arr1.sort() # 就地进行排序,修改原数组
arr1
1
2
2
array([-1.8169914 , -1.22289349, -0.82692313, -0.69359315, -0.25790262,
-0.16177984, -0.07844104, -0.05392797, -0.00798806, 0.99718196])
多维数组排序
arr2 = np.random.randn(3, 4)
arr2
1
2
2
array([[-0.57733315, 0.46641581, -0.02506395, -1.05509617],
[ 1.49973396, -1.78825716, 0.50304476, -0.57537376],
[ 0.01782885, 1.00483895, 0.29039407, -1.24355953]])
np.sort(arr2, axis=1) # 按列排序
1
array([[-1.05509617, -0.57733315, -0.02506395, 0.46641581],
[-1.78825716, -0.57537376, 0.50304476, 1.49973396],
[-1.24355953, 0.01782885, 0.29039407, 1.00483895]])
np.sort(arr2, axis=0) # 按行排序
1
array([[-0.57733315, -1.78825716, -0.02506395, -1.24355953],
[ 0.01782885, 0.46641581, 0.29039407, -1.05509617],
[ 1.49973396, 1.00483895, 0.50304476, -0.57537376]])
my_dt = np.dtype([('name', 'U10'),('age', int)]) # 按关键字排序
my_dt
1
2
2
dtype([('name', '<U10'), ('age', '<i8')])
按键排序
arr3 = np.array([("罗志祥", 21), ("黄渤", 25), ("孙红雷", 17), ("黄磊",27)], dtype=my_dt)
arr3
1
2
2
array([('罗志祥', 21), ('黄渤', 25), ('孙红雷', 17), ('黄磊', 27)],
dtype=[('name', '<U10'), ('age', '<i8')])
np.sort(arr3, order='age')
1
array([('孙红雷', 17), ('罗志祥', 21), ('黄渤', 25), ('黄磊', 27)],
dtype=[('name', '<U10'), ('age', '<i8')])
上次更新: 2023/11/01, 03:11:44