# 導包 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) """