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

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

Barbara Streisand
リリース: 2024-12-12 18:44:11
オリジナル
460 人が閲覧しました

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

NumPy 配列内の複数の値の行インデックスを見つける方法?

NumPy は、NumPy 配列内の指定された値の行インデックスを見つけるためのいくつかの方法を提供します。

アプローチ #1: NumPyブロードキャスト

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

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

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]
ログイン後にコピー

アプローチ #3: メモリ効率の高いアプローチでアプローチするnp.searchsorted

dims = X.max(0) + 1
X1D = np.ravel_multi_index(X.T,dims)
searched_valuesID = np.ravel_multi_index(searched_values.T,dims)
sidx = X1D.argsort()
out = sidx[np.searchsorted(X1D,searched_valuesID,sorter=sidx)]
ログイン後にコピー

np.ravel_multi_index

について np.ravel_multi_index は、多次元インデックス タプルをグリッドの線形インデックスに変換します。各列がディメンションを表し、グリッド形状を使用して線形インデックスを計算すると仮定します。

たとえば、X:

X = np.array([[4, 2],
              [9, 3]])
ログイン後にコピー

および dims = [10, 7] の場合、最初の行はX (4, 2) の値は線形インデックス 30 に変換されます。これは、グリッド:

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

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

一意の線形インデックスを確保するには、グリッドのディメンションを、グリッドの各軸の最大ストレッチに設定する必要があります。入力配列 X。これは、X の各列の最大値に 1 を加算することで実現できます。

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

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