NumPyソート、検索、カウント

25971 ワード


Numpy紹介NumpyインストールNumPy ndarray
NumPyデータ型NumPy配列作成NumPyは、既存のデータに基づいて配列を作成する.
NumPyは、数値区間に基づいて配列を作成する.
NumPy配列スライスNumPy放送NumPy配列反復NumPyビット演算NumPy文字列関数NumPy数学関数NumPy統計関数NumPyソート、検索、カウントNumPyコピーおよびビューNumPyマトリクスライブラリ関数NumPy線形代数NumPyには、様々なソートに関する関数が用意されています.これらのソート関数は、実行速度、最悪のパフォーマンス、必要なワークスペース、およびアルゴリズムの安定性を特徴とする異なるソートアルゴリズムを実現する.次の表は、3つのソートアルゴリズムの比較です.
種類
スピード
最悪の場合
ワークスペース
あんていせい
‘quicksort’
1
O(n^2)
0
no
‘mergesort’
2
O(n*log(n))
~n/2
yes
‘heapsort’
3
O(n*log(n))
0
no
numpy.sort() sort()は配列を並べ替え、並べ替えられた配列のコピーを返します.軸方向を指定できます.
関数構文:
numpy.sort(a, axis, kind, order)

パラメータ
  • aソート対象配列
  • axisソートの軸を指定します.ない場合は、最後の軸で並べ替えます.
  • kindデフォルトは「quicksort」
  • order指定ソートフィールド
  • import numpy as np  
    a = np.array([[3,7],[9,1]]) 
    
    print ('  :' )
    print (a) 
    print ('
    '
    ) print (' :' ) print (np.sort(a)) print ('
    '
    ) print (' 0 :') print (np.sort(a, axis = 0)) print ('
    '
    ) # dt = np.dtype([('name', 'S10'),('age', int)]) a = np.array([("kevin", 21),("peter",25),("tony", 17), ("mike",27)], dtype = dt) print (' :') print (a) print ('
    '
    ) print (' name :') print (np.sort(a, order = 'name'))

    しゅつりょく
      :
    [[3 7]
     [9 1]]
    
      :
    [[3 7]
     [1 9]]
    
       0   :
    [[3 1]
     [9 7]]
    
      :
    [(b'kevin', 21) (b'peter', 25) (b'tony', 17) (b'mike', 27)]
    
      name   :
    [(b'kevin', 21) (b'mike', 27) (b'peter', 25) (b'tony', 17)]
    
    

    numpy.argsort()
    この関数は、まず配列をソートし、ソート後の配列インデックスを抽出して配列形式で返します.元の配列は変更されず、インデックスによってソート結果が得られます.
    import numpy as np 
    x = np.array([3, 1, 2]) 
    
    print ('  x:') 
    print (x) 
    print ('
    '
    ) print (' argsort() x:') y = np.argsort(x) print (y) print ('
    '
    ) print (' :' ) print (x[y]) print ('
    '
    ) print (' :') for i in y: print (x[i])

    しゅつりょく
      x:
    [3 1 2]
    
     argsort()   x:
    [1 2 0]
    
               :
    [1 2 3]
    
              :
    1 
    2 
    3
    

    numpy.lexsort()
    SQLのORDERBYの複数のフィールド:ORDER BY 1, 2, 3と同様に、複数のシーケンスをソートします.表計算ドキュメントのソートは、各カラムがシーケンスを表し、後のカラムほど優先度が高くなることが考えられます.
    元の配列は変更されず、この関数はソート後の配列インデックスを抽出し、配列形式で返し、インデックスによってソート結果を得ることができます.
    import numpy as np  
      
    a = np.array(['a','b','c','d','e'])  
      
    b = np.array([12, 90, 380, 12, 211])  
      
    ind = np.lexsort((a,b))  
      
    print("          :")  
      
    print(ind)  
      
    print("         :")  
      
    for i in ind:  
        print(a[i],b[i])  
    

    しゅつりょく
              :
    [0 3 1 4 2]
             :
    a 12
    d 12
    b 90
    e 211
    c 380
    

    numpy.argmax()とnumpy.argmin()
    この2つの関数は、指定した軸上の最大要素と最小要素のインデックスを返します.
    import numpy as np 
    a = np.array([[30,40,70],[80,20,10],[50,90,60]]) 
    
    print ('  :') 
    print (a) 
    print ('
    '
    ) print (' argmax() :') print (np.argmax(a, 0)) print ('
    '
    ) print (' argmin() :') print (np.argmin(a, 0) ) print ('
    '
    )

    しゅつりょく
       :
    [[30 40 70]
     [80 20 10]
     [50 90 60]]
    
      argmax()  :
    [1 2 0]
    
      argmin()  :
    [0 1 1]
    

    numpy.nonzero()
    この関数は、配列内のゼロ以外の要素のインデックスを返します.
    import numpy as np  
      
    b = np.array([12, 90, 380, 12, 211])  
      
    print("      
    "
    , b) print ('
    '
    ) print(" ") print(b.nonzero())

    しゅつりょく
           
    [ 12  90 380  12 211]
    
             
    (array([0, 1, 2, 3, 4]),)
    
    

    numpy.where()
    この関数は、配列内の条件を満たす要素を検索し、インデックスを返します.
    import numpy as np  
      
    b = np.array([12, 90, 380, 12, 211])  
      
    print(np.where(b>12))  
      
    c = np.array([[20, 24],[21, 23]])  
      
    print(np.where(c>20))  
    

    しゅつりょく
    (array([0, 1, 1]), array([1, 0, 1]))
    

    numpy.extract()
    この関数は、配列内の条件を満たす要素を返します.
    import numpy as np  
      
    b = np.array([12, 90, 380, 12, 211])  
      
    print(np.extract(b>12, b))  
      
    c = np.array([[20, 24],[21, 23]])  
      
    print(np.extract(c>20, c))  
    

    しゅつりょく
    [ 90 380 211]
    [24 21 23]