# 导包 import numpy as np
排序
.sort()
x = np.arange(16) # array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]) # 随机打乱顺序,且x顺序改变 np.random.shuffle(x) # array([13, 2, 6, 7, 11, 10, 3, 4, 8, 0, 5, 1, 9, 14, 12, 15]) np.sort(x) x # array([13, 2, 6, 7, 11, 10, 3, 4, 8, 0, 5, 1, 9, 14, 12, 15]) x.sort() x # array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15])
X = np.random.randint(10, size=(4,4)) # 每列按大小排序 np.sort(X, axis=0) # 每行按大小排序 np.sort(X, axis=1)
使用索引
.argsort()
x = np.arange(16) np.random.shuffle(x) x # array([ 5, 13, 0, 10, 2, 14, 1, 3, 11, 8, 12, 9, 7, 4, 6, 15]) np.argsort(x) # array([ 2, 6, 4, 7, 13, 0, 14, 12, 9, 11, 3, 8, 10, 1, 5, 15],dtype=int64) """ 所得结果为打乱后数据从小到大排列的索引 """
.partition()
np.partition(x, 7) # array([ 1, 3, 0, 4, 2, 5, 6, 7, 8, 12, 13, 9, 11, 10, 14, 15]) """ np.partition(x,7) # 表示数组 x 中第 7 小的元素位于排序完成数组 x 的第 7 个位置上
然后小于该元素的位于该元素左边,大于该元素的位于右边,
左右两边没有特别的排序要求,只要求左边小于该元素,右边大于该元素即可 """
.argpartition()
#返回的是排序完成的元素索引数组 np.argpartition(x, 7)
np.random.seed(10) X = np.random.randint(10, size=(4,4)) """ array([[9, 4, 0, 1], [9, 0, 1, 8], [9, 0, 8, 6], [4, 3, 0, 4]]) """ np.argsort(X, axis=1) """ array([[2, 3, 1, 0], [1, 2, 3, 0], [1, 3, 2, 0], [2, 1, 0, 3]], dtype=int64) """ np.argpartition(X, 2, axis=1) """ array([[2, 3, 1, 0], [1, 2, 3, 0], [1, 3, 2, 0], [2, 1, 0, 3]], dtype=int64) """