Numpy で 1 つの配列を別の配列でインデックス付けする
2 つの行列、A と B を考えます。ここで、A には任意の値が含まれ、B には A 内の要素のインデックスが保持されます。このタスクは、B で指定されたインデックスに基づいて A から要素を抽出することです。このインデックス作成により、選択的な要素の取得が可能になります。
高度なインデックス作成を使用したソリューション:
Numpy の高度なインデックス作成により、次の式を使用してこの操作が可能になります:
A[np.arange(A.shape[0])[:,None], B]
このアプローチでは、B から取得した行インデックスと列インデックスの組み合わせを利用して、A の要素を取得します。
線形インデックスを使用したソリューション:
別のアプローチには、線形インデックス付けが含まれます。
m, n = A.shape out = np.take(A, B + n*np.arange(m)[:,None])
ここで、m と n は A の次元を表します。 np.take() 関数内の操作により、B.
例:
これらのソリューションを例で説明しましょう:import numpy as np A = np.array([[2, 4, 5, 3], [1, 6, 8, 9], [8, 7, 0, 2]]) B = np.array([[0, 0, 1, 2], [0, 3, 2, 1], [3, 2, 1, 0]]) # Advanced indexing result1 = A[np.arange(A.shape[0])[:,None], B] # Linear indexing m, n = A.shape result2 = np.take(A, B + n*np.arange(m)[:,None]) print("Result using advanced indexing:") print(result1) print("Result using linear indexing:") print(result2)
以上がある Numpy 配列を別の Numpy 配列でインデックスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。