はじめに
この実験では、Numpy ライブラリの numpy.partition() 関数について学びます。この関数は、与えられた引数に基づいて入力配列を分割し、入力配列の分割されたコピーを返します。numpy.partition() 関数は、配列全体をソートすることなく、配列内の k 番目に小さいまたは大きい要素を迅速に見つけたい場合に便利です。
VM のヒント
VM の起動が完了したら、左上隅をクリックして ノートブック タブに切り替え、Jupyter Notebook を使用して練習します。
Jupyter Notebook の読み込みには数秒かかる場合があります。Jupyter Notebook の制限により、操作の検証は自動化できません。
学習中に問題が発生した場合は、Labby にお問い合わせください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。
Numpy ライブラリをインポートする
まず、Python で配列や行列を操作する際に一般的に使用される Numpy ライブラリをインポートする必要があります。
import numpy as np
入力配列を作成する
次に、Numpy の array() メソッドを使用して入力配列を作成します。この配列は、numpy.partition() 関数を使用するための起点となります。
inp_ar = np.array([2, 0, 1, 5, 4, 9, 78, 34])
print("The input array:")
print(inp_ar)
配列を分割する
次に、numpy.partition() 関数を使用して、入力配列 inp_ar を 5 番目に小さい数を中心に分割します。また、分割された結果の配列も表示します。
output = np.partition(inp_ar, 5)
print("The partitioned array:")
print(output)
複数の k 番目の値を持つ配列を分割する
numpy.partition() 関数は、複数の k 番目の値を中心にした分割も可能です。この例では、1 番目と 3 番目に小さい数を中心に配列を分割します。
arr = np.array([7, 4, 8, 1, 10, 13])
print("The input array:")
print(arr)
output = np.partition(arr, (1, 3))
print("The partitioned array:")
print(output)
軸、種類、および順序を指定する
numpy.partition() 関数には、分割する軸、実行するソートの種類、およびフィールドを比較する順序を指定するためのオプション パラメータもあります。この例では、これらのオプション パラメータを使用して、2 次元配列を 2 番目の軸に沿って分割し、ソートの種類と順序を指定します。
arr_2d = np.array([[4, 5, 2], [3, 1, 6]])
print("The input 2D array:")
print(arr_2d)
output = np.partition(arr_2d, 1, axis=1, kind='heapsort', order=('col1', 'col2', 'col0'))
print("The partitioned 2D array:")
print(output)
負の k 番目の値で分割する
numpy.partition() 関数は、kth パラメータの負の値も処理できます。この例では、-2 番目に小さい数を中心に配列を分割します。
arr = np.array([9, 3, 4, 1, 6])
print("The input array:")
print(arr)
output = np.partition(arr, -2)
print("The partitioned array:")
print(output)
まとめ
この実験では、Numpy ライブラリの numpy.partition() 関数について学びました。入力配列を作成する方法、numpy.partition() 関数を使用してそれを分割する方法、複数の k 番目の値を中心に分割する方法、軸、ソート方法、および順序を指定する方法、負の k 番目の値を処理する方法について説明しました。numpy.partition() 関数は、大きな配列を扱い、全体をソートすることなく k 番目に小さいまたは大きい要素を迅速に見つけたい場合に便利です。