Python
 Computer >> コンピューター >  >> プログラミング >> Python

NumPyで特定の範囲内の配列要素を抽出・表示する方法|np.where()とnp.logical_and()の使い方

はじめに

この記事では、NumPy配列の中から指定した範囲内に含まれる要素を抽出して表示する方法を解説します。主に使用する関数は、np.where()np.logical_and() の2つです。

アルゴリズム

ステップ1:NumPy配列を定義する。
ステップ2:np.where() と np.logical_and() を使って、指定範囲内の数値を見つける。
ステップ3:結果を出力する。

サンプルコード

import numpy as np

arr = np.array([1, 3, 5, 7, 10, 2, 4, 6, 8, 10, 36])
print("元の配列:\n", arr)

result = np.where(np.logical_and(arr >= 4, arr <= 20))
print(result)

実行結果

元の配列:
[ 1  3  5  7 10  2  4  6  8 10 36]
(array([2, 3, 4, 6, 7, 8, 9], dtype=int64),)

解説

np.where() 関数は、引数に渡された条件を満たす要素のインデックス位置を返します。上記の例では、「4以上かつ20以下」という条件を満たす要素が、インデックス 2、3、4、6、7、8、9 の位置に存在することがわかります。

np.logical_and() は、複数の条件を論理積(AND)で組み合わせるための関数です。「4以上であること」と「20以下であること」という2つの条件を同時に判定できます。なお、同じ処理は (arr >= 4) & (arr <= 20) のように & 演算子を使っても記述可能です。

条件を満たす要素の値そのものを取得するには

np.where() の戻り値はインデックスであるため、要素の値を直接取得したい場合は、ブールインデックス参照を使うのが便利です。

values = arr[np.logical_and(arr >= 4, arr <= 20)]
print(values)
[ 5  7 10  4  6  8 10]

このように、条件式をそのまま添字として渡すことで、範囲内に該当する要素の値を一括して取り出せます。データのフィルタリングや前処理の際に非常に役立つテクニックなので、ぜひ覚えておきましょう。

  1. NumPy配列のデータ型を確認・変更する方法 ― dtypeとastypeの使い方

    NumPy配列は、Python標準のデータ型に加えて、非常に多彩なデータ型をサポートしています。配列は作成後でも必要に応じて要素のデータ型を変更でき、そのために使われるのが array.dtype と array.astype の2つの方法です。 array.dtype でデータ型を確認する dtype は、配列内の要素が現在使用しているデータ型を取得するための属性です。次の例では、配列を宣言してそのデータ型を確認しています。 コード例 import numpy as np # NumPy配列を作成 a = np.array([21.23, 13.1, 52.1, 8, 255]) # 配

  2. Pythonのforループで数字を使った三角形パターンを作成する方法

    Pythonでは、forループ(ネストした二重ループ)を組み合わせることで、数字を使ったさまざまな三角形パターンを簡単に出力できます。ここでは、基本となる3つのパターンをわかりやすく解説します。 基本の三角形:行ごとに1から数え直すパターン 最もシンプルな形は、各行で1から順に数字を出力するパターンです。外側のループが行数、内側のループがその行に表示する数字の個数を制御します。 for i in range(5): for j in range(i + 1): print(j + 1, end=) print() 実行結果 1 12 123 1234 12