ホームページ > バックエンド開発 > Python チュートリアル > NumPy 配列内の値に一致する行インデックスを効率的に見つけるにはどうすればよいですか?

NumPy 配列内の値に一致する行インデックスを効率的に見つけるにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-15 18:06:12
オリジナル
654 人が閲覧しました

How to Efficiently Find Row Indices Matching Values in a NumPy Array?

Numpy 配列内のさまざまな値の行インデックスを検索します

1.問題の理解

配列 X と配列 search_values が与えられた場合、タスクは、searched_values 内の対応する行に一致する X 内の行のインデックスを見つけることです。

2. NumPy ブロードキャストを使用したアプローチ

np.where((X==searched_values[:,None]).all(-1))[1]
ログイン後にコピー

3. np.ravel_multi_index と np.in1d

dims = X.max(0)+1
out = np.where(np.in1d(np.ravel_multi_index(X.T,dims),\
                    np.ravel_multi_index(searched_values.T,dims)))[0]
ログイン後にコピー

を使用したメモリ効率の高いアプローチ 4. np.ravel_multi_index

について np.ravel_multi_index は、n 次元インデックスの 2D 配列を線形インデックスに変換します。たとえば、X と dims が与えられると、

np.ravel_multi_index(X.T,dims)
ログイン後にコピー

が計算され、結果は [30, 66, 61, 24, 41] になります。ここで、各数値は、X の対応する行に相当する線形インデックスを表します。

5.一意の線形インデックスのディメンションの選択

一意の線形インデックスを生成するために np.ravel_multi_index のディメンションを選択する場合は、次の点を考慮してください:

  • 入力配列 (X) の各列は 1 つの軸を表します
  • 一意の線形インデックスを確保するには、各軸の最大ストレッチを考慮する必要があります。これは、各列の最大値に 1 を加えたものです。

指定された X の場合:

dims = X.max(0)+1 # [10, 7]
ログイン後にコピー

これにより、少なくとも指定された次元を持つグリッドが作成され、一意の線形インデックスが確保されます。 .

以上がNumPy 配列内の値に一致する行インデックスを効率的に見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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