16_NumPy配列ndarray行と列を任意の順序で並べます

9276 ワード

16_NumPy配列ndarray行と列を任意の順序で並べます
NumPy配列ndarrayの行と列は、派手なインデックスと呼ばれるメカニズムを使用して、任意の順序で並べ替えることができます(置き換えられます).
行と列の状況を別々に説明します.
  • 列を任意の順序で並べ替える
  • .
  • 行を任意の順序で並べ替える
  • .
    np.sort()またはnp.argsort()を使用して、昇順または降順のソート(ソート)を行います.
    詳細は以下の記事を参照してください.
  • 15_Numpyはsortとargsort関数を用いて(行・列)並べ替え
  • を行う.
    次の2 Dアレイを例にとります.
    import numpy as np
    
    a = np.arange(10, 35).reshape(5, 5)
    print(a)
    # [[10 11 12 13 14]
    #  [15 16 17 18 19]
    #  [20 21 22 23 24]
    #  [25 26 27 28 29]
    #  [30 31 32 33 34]]
    

    列を任意の順序でソート
    インデックスリストを任意の順序で参照することで、ソート後のndarrayを得ることができます.
    col_swap = a[:, [3, 2, 4, 0, 1]]
    print(col_swap)
    # [[13 12 14 10 11]
    #  [18 17 19 15 16]
    #  [23 22 24 20 21]
    #  [28 27 29 25 26]
    #  [33 32 34 30 31]]
    

    反転する場合、スライス::-1はリストよりも簡単です.
    col_inverse = a[:, ::-1]
    print(col_inverse)
    # [[14 13 12 11 10]
    #  [19 18 17 16 15]
    #  [24 23 22 21 20]
    #  [29 28 27 26 25]
    #  [34 33 32 31 30]]
    

    特定のカラムのみを抽出(選択)することもできます.重複していても構いません.
    col_select = a[:, [2, 4, 0]]
    print(col_select)
    # [[12 14 10]
    #  [17 19 15]
    #  [22 24 20]
    #  [27 29 25]
    #  [32 34 30]]
    
    col_select2 = a[:, [2, 2, 2]]
    print(col_select2)
    # [[12 12 12]
    #  [17 17 17]
    #  [22 22 22]
    #  [27 27 27]
    #  [32 32 32]]
    

    任意の順序で行をソート
    行は列と同じです.
    後ろのインデックス::省略できます([...,:]は[...]に等しい).
    row_swap = a[[3, 2, 4, 0, 1], :]
    print(row_swap)
    # [[25 26 27 28 29]
    #  [20 21 22 23 24]
    #  [30 31 32 33 34]
    #  [10 11 12 13 14]
    #  [15 16 17 18 19]]
    
    row_swap = a[[3, 2, 4, 0, 1]]
    print(row_swap)
    # [[25 26 27 28 29]
    #  [20 21 22 23 24]
    #  [30 31 32 33 34]
    #  [10 11 12 13 14]
    #  [15 16 17 18 19]]
    
    row_inverse = a[::-1]
    print(row_inverse)
    # [[30 31 32 33 34]
    #  [25 26 27 28 29]
    #  [20 21 22 23 24]
    #  [15 16 17 18 19]
    #  [10 11 12 13 14]]
    
    row_select = a[[2, 4, 0]]
    print(row_select)
    # [[20 21 22 23 24]
    #  [30 31 32 33 34]
    #  [10 11 12 13 14]]
    
    row_select2 = a[[2, 2, 2]]
    print(row_select2)
    # [[20 21 22 23 24]
    #  [20 21 22 23 24]
    #  [20 21 22 23 24]]