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

Python・NumPyで指定した範囲内の要素を検索・抽出する方法

NumPyライブラリを使ってデータ処理を行っていると、特定の範囲内にある数値だけを取り出したい場面があります。NumPyには、こうした条件に合う要素を簡単に検索できる組み込み機能が用意されています。

本記事では、代表的な2つの手法——logical_and関数を使う方法と、*演算子を使う方法——について、サンプルコード付きでわかりやすく解説します。

logical_and関数で条件を指定する方法

まずは、np.logical_and関数を利用するアプローチです。この関数に対して複数の条件を渡すことで、「〜以上かつ〜以下」といった範囲条件を表現できます。さらに、np.whereを組み合わせることで、その条件を満たす要素を取得できます。

この方法の特徴は、条件を満たす要素の「位置(インデックス)」が返されるという点です。以下のコードでは、6以上15以下の要素を検索しています。

import numpy as np

A = np.array([5, 9, 11, 4, 31, 27, 8])

# 元の配列を表示
print("Given Array : ", A)

# 範囲:6以上15以下
res = np.where(np.logical_and(A >= 6, A <= 15))

# 結果を表示
print("Array with condition : ", res)

実行結果

上記のコードを実行すると、次のような出力が得られます。

Given Array : [ 5  9 11  4 31 27  8]
Array with condition : (array([1, 2, 6], dtype=int32),)

出力を見ると、インデックス1、2、6の位置にある要素(9、11、8)が条件を満たしていることがわかります。

* 演算子で条件を組み合わせる方法

次に、*演算子を使う方法です。(A >= 6) * (A <= 15)のように、各条件式を掛け合わせることで論理積(AND)を実現します。ブール配列同士の掛け算は、Trueを1、Falseを0として扱われるため、両方の条件が成り立つ箇所のみが選択されます。

この方法のメリットは、要素の位置ではなく「実際の値」そのものが結果として返される点です。

import numpy as np

A = np.array([5, 9, 11, 4, 31, 27, 8])

# 元の配列を表示
print("Given Array : ", A)

# 範囲:6以上15以下
res = A[(A >= 6) * (A <= 15)]

# 結果を表示
print("Array with condition : ", res)

実行結果

上記のコードを実行すると、次のような出力が得られます。

Given Array : [ 5  9 11  4 31 27  8]
Array with condition : [ 9 11  8]

まとめ

NumPyで範囲内の要素を検索する主な方法を整理すると、次のようになります。

  • np.where + np.logical_and:条件を満たす要素のインデックスを取得したい場合に便利です。
  • * 演算子による条件の組み合わせ:条件を満たす要素の値そのものを直接抽出したい場合にシンプルで読みやすいコードになります。

なお、*演算子の代わりに & 演算子を使用することも可能です。その場合は、各条件式を括弧で囲むことを忘れないようにしましょう。用途に応じて使い分けることで、データのフィルタリング処理を効率的に行えます。

  1. Pythonでリストから指定したインデックスの複数要素を削除する方法

    Pythonのリストから単一の要素を削除するのは、del文とインデックスを組み合わせれば簡単に行えます。しかし、複数のインデックスに該当する要素をまとめて削除したいケースでは、少し工夫が必要です。本記事では、削除対象となるインデックスのリストを指定して、元のリストから該当する要素だけを取り除く方法を2つ紹介します。方法1:sorted()とdelを組み合わせるこのアプローチでは、まず削除したい位置(インデックス)を格納したリストを作成します。その後、降順にソートしてから後ろの要素から順に削除することで、削除処理中にインデックスがずれる問題を回避し、元のリストの構造を保ったまま安全に要素を削除で

  2. 【初心者向け】Pythonでリストのサイズ(要素数)を取得する方法

    リスト(list)は、Pythonにおける代表的なコレクション型のデータ構造の一つです。リストの要素は後から変更でき、重複した値を持つこともできます。本記事では、Pythonでリストのサイズ(長さ)を取得する方法を解説します。具体的には、重複の有無にかかわらず、リストに含まれる全要素の数をカウントする方法を紹介します。リストの長さを取得する基本:len()関数Pythonでリストの要素数を取得するには、組み込み関数の len() を使用します。len() はリストだけでなく、タプル・文字列・辞書などさまざまなコレクションに対しても利用できる汎用的な関数です。サンプルコード以下の例では、「day