NumPy 配列のフィルタリング
- 前のページ NumPy 配列のソート
- 次のページ NumPy ランダム
配列フィルタリング
既存の配列から一部の要素を取り出して新しい配列を作成することをフィルタリング(filtering)と呼びます。
NumPyでは、ブールインデックスリストを使用して配列をフィルタリングします。
ブールインデックスリストは、配列のインデックスに対応するブール値のリストです。
インデックスの値が True
その場合、その要素はフィルターアrrayに含まれます;インデックスの値が False
その場合、その要素はフィルターアrrayから除外されます。
インスタンス
インデックス0と2、4の要素を使用して配列を作成します:
import numpy as np arr = np.array([61, 62, 63, 64, 65]) x = [True, False, True, False, True] newarr = arr[x] print(newarr)
上記の例では、 [61, 63, 65]
なぜか?
新しいフィルターアrrayには、フィルターアrrayに値がある部分のみが含まれています。 True
の値を生成するために、この場合、インデックス0と2、4です。
フィルターアrrayの
上記の例では、 True
および False
値はハードコードされていますが、通常の用途は条件に基づいてフィルターアrrayを作成することです。
インスタンス
62より大きな値のみを返すフィルターアrrayを作成します:
import numpy as np arr = np.array([61, 62, 63, 64, 65]) # 空のリストを作成 filter_arr = [] # arrの各要素を巡回 for element in arr: # もし要素が62より大きい場合、値をTrueに設定します。それ以外の場合はFalseに設定します: if element > 62: filter_arr.append(True) else: filter_arr.append(False) newarr = arr[filter_arr] print(filter_arr) print(newarr)
インスタンス
フィルターアrrayを作成します。このarrayは元のarrayの偶数要素のみを返します:
import numpy as np arr = np.array([1, 2, 3, 4, 5, 6, 7]) # 空のリストを作成 filter_arr = [] # arrの各要素を巡回 for element in arr: # 要素が2で割り切れる場合、値をTrueに、そうでない場合Falseに設定します if element % 2 == 0: filter_arr.append(True) else: filter_arr.append(False) newarr = arr[filter_arr] print(filter_arr) print(newarr)
直接arrayからフィルターアrrayを作成
この例はNumPyで非常に一般的なタスクであり、NumPyはこの問題を解決するための良い方法を提供しています。
条件の中で直接arrayをiterable変数の代わりに使用することで、期待通りに動作します。
インスタンス
62より大きな値のみを返すフィルターアrrayを作成します:
import numpy as np arr = np.array([61, 62, 63, 64, 65]) filter_arr = arr > 62 newarr = arr[filter_arr] print(filter_arr) print(newarr)
インスタンス
フィルターアrrayを作成します。このarrayは元のarrayの偶数要素のみを返します:
import numpy as np arr = np.array([1, 2, 3, 4, 5, 6, 7]) filter_arr = arr % 2 == 0 newarr = arr[filter_arr] print(filter_arr) print(newarr)
- 前のページ NumPy 配列のソート
- 次のページ NumPy ランダム