複数条件の配列要素にアクセスするために Numpy の `where` 関数を正しく使用する方法

Patricia Arquette
リリース: 2024-10-26 09:13:30
オリジナル
952 人が閲覧しました

 How to Correctly Use Numpy's `where` Function for Multi-Condition Array Element Access?

Numpy の Where 関数で複数の条件を使用して配列要素にアクセスする

NumPy で配列を操作する場合、多くの場合、要素に基づいて選択的にアクセスする必要があります。特定の条件で。 where() 関数は、このシナリオで重要な役割を果たし、指定された基準を満たす要素を柔軟に選択できるようにします。

ただし、where() の望ましい動作が期待から逸脱するインスタンスが発生し、エラーが発生します。または予想外の結果。 NumPy で効果的に配列を操作するには、この関数のニュアンスを理解することが不可欠です。

次のコード スニペットを考えてみましょう:

<code class="python">dists[(np.where(dists >= r)) and (np.where(dists <= r + dr))]
ログイン後にコピー

このコードは、指定された範囲 [r, r] 内の距離を選択することを目的としています。博士]。ただし、2 番目の条件 dists <= r dr を満たす要素のみがキャプチャされます。これを修正するには、両方の条件を 1 つの条件に変換するか、高度なインデックスを利用します。

<code class="python">dists[abs(dists - r - dr/2.) <= dr/2.]
ログイン後にコピー
<code class="python">dists[(dists >= r) & (dists <= r+dr)]
ログイン後にコピー

元のコードの問題は、where() の誤った使用法に起因します。ブール配列とは異なり、where() はインデックスのリストを返します。および を介して 2 つのインデックスのリストを結合すると、2 番目のリストが生成され、最初の条件が効果的にオーバーライドされます。

さらに明確にするために、次の点を考慮してください。

<code class="python">a = np.where(dists >= r)
b = np.where(dists <= r + dr)
ログイン後にコピー

a と b の結果は b になります。 。正しいブール配列を取得するには、要素ごとの & 演算子を使用して条件を組み合わせる必要があります:

<code class="python">dists >= r &amp; dists <= r + dr
ログイン後にコピー

ブール配列が使用可能になったら、それを配列の選択に利用できます:

<code class="python">dists[dists >= r &amp; dists <= r + dr]</code>
ログイン後にコピー

以上が複数条件の配列要素にアクセスするために Numpy の `where` 関数を正しく使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート