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 サイトの他の関連記事を参照してください。