Numpy Where 関数と複数の条件
この質問は、Numpy Where 関数と複数の条件に基づく要素の選択に関するものです。
問題と問題の説明
ユーザーは、2 つの条件 (より大きいとより小さい) を適用して、配列 (dists) から特定の範囲内にある要素を選択したいと考えています。ただし、where 関数を (np.where(dists >= r)) および (np.where(dists <= r dr)) として使用すると、予期しない結果が生じます。
解決策
方法 1: 条件を 1 つの基準に結合する
この特定のケースでは、2 つの条件を 1 つの基準に結合することをお勧めします。
dists[abs(dists - r - dr/2.) <= dr/2.]
この単純なアプローチは、dist と範囲の中心の差の絶対値 (r dr/2) が範囲幅 (dr/2) の半分以下であるかどうかをチェックします。
方法 2: ファンシー インデックスを使用する
または、ファンシー インデックスを使用して、ブール マスクを使用して元の配列から要素を直接選択することもできます。
dists[(dists >= r) & (dists <= r + dr)]
この利点この方法では、要素ごとの論理演算子 (& および |) を使用して条件を結合し、基準を満たす要素を識別するバイナリ マスクが生成されます。
問題の説明
(np.where(dists >= r)) と (np.where(dists <= r dr)) を使用した元のアプローチは、np.where がブール配列ではなくインデックスのリストを返すため、失敗します。 2 つの数値リスト間の論理積演算では、論理比較ではなく 2 番目のリストが評価されます。
以上が「where」関数を使用して複数の条件を満たす Numpy 配列から要素を選択する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。