Numpy 排序,條件篩選函數


 
 

NumPy 排序、條件刷選函數

NumPy 提供了多種排序的方法。 這些排序函數實現不同的排序算法,每個排序算法的特征在於執行速度,最壞情況性能,所需的工作空間和算法的穩定性。 下表顯示了三種排序算法的比較。

種類 速度 最壞情況 工作空間 穩定性
'quicksort'(快速排序) 1 O(n^2) 0
'mergesort'(歸並排序) 2 O(n*log(n)) ~n/2
'heapsort'(堆排序) 3 O(n*log(n)) 0

numpy.sort()

numpy.sort() 函數返回輸入數組的排序副本。函數格式如下:

numpy.sort(a, axis, kind, order)

參數說明:

    • a: 要排序的數組
    • axis: 沿着它排序數組的軸,如果沒有數組會被展開,沿着最后的軸排序, axis=0 按列排序,axis=1 按行排序
    • kind: 默認為'quicksort'(快速排序)
    • order: 如果數組包含字段,則是要排序的字段

 

 

numpy.argsort()

numpy.argsort() 函數返回的是數組值從小到大的索引值。

 
 

numpy.lexsort()

numpy.lexsort() 用於對多個序列進行排序。把它想象成對電子表格進行排序,每一列代表一個序列,排序時優先照顧靠后的列。

 
import numpy as np 
 
nm =  ('raju','anil','ravi','amar') 
dv =  ('f.y.',  's.y.',  's.y.',  'f.y.') 
ind = np.lexsort((dv,nm))  
print ('調用 lexsort() 函數:') 
print (ind) 
print ('\n') 
print ('使用這個索引來獲取排序后的數據:') 
print ([nm[i]  +  ", "  + dv[i]  for i in ind])
 
 
 
 
import numpy as np 
 
nm =  ('raju','anil','ravi','amar') 
dv =  ('f.y.',  's.y.',  's.y.',  'f.y.') 
ind = np.lexsort((dv,nm))  
print ('調用 lexsort() 函數:') 
print (ind) 
print ('\n') 
print ('使用這個索引來獲取排序后的數據:') 
print ([nm[i]  +  ", "  + dv[i]  for i in ind])
 
 
 
 
調用 lexsort() 函數:
[3 1 0 2]

使用這個索引來獲取排序后的數據:
['amar, f.y.', 'anil, s.y.', 'raju, f.y.', 'ravi, s.y.']
 
        

上面傳入 np.lexsort 的是一個tuple,排序時首先排 nm,順序為:amar、anil、raju、ravi 。綜上排序結果為 [3 1 0 2]。

msort、sort_complex、partition、argpartition

函數 描述
msort(a) 數組按第一個軸排序,返回排序后的數組副本。np.msort(a) 相等於 np.sort(a, axis=0)。
sort_complex(a) 對復數按照先實部后虛部的順序進行排序。
partition(a, kth[, axis, kind, order]) 指定一個數,對數組進行分區
argpartition(a, kth[, axis, kind, order]) 可以通過關鍵字 kind 指定算法沿着指定軸對數組進行分區


 

numpy.argmax() 和 numpy.argmin()

numpy.argmax() 和 numpy.argmin()函數分別沿給定軸返回最大和最小元素的索引

 
 

numpy.nonzero()

numpy.nonzero() 函數返回輸入數組中非零元素的索引。

 
 

numpy.where()

numpy.where() 函數返回輸入數組中滿足給定條件的元素的索引。

 
 

numpy.extract()

numpy.extract() 函數根據某個條件從數組中抽取元素,返回滿條件的元素。

import numpy as np 
 
x = np.arange(9.).reshape(3,  3)  
print ('我們的數組是:')
print (x)
# 定義條件, 選擇偶數元素
condition = np.mod(x,2)  ==  0  
print ('按元素的條件值:')
print (condition)
print ('使用條件提取元素:')
print (np.extract(condition, x))
 
 
 
 
 
 
 
我們的數組是:
[[ 0.  1.  2.]
 [ 3.  4.  5.]
 [ 6.  7.  8.]]
按元素的條件值:
[[ True False  True]
 [False  True False]
 [ True False  True]]
使用條件提取元素:
[ 0.  2.  4.  6.  8.]
 
 
 


免責聲明!

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



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