Numpy 排序和使用索引


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM