NumPy 配列によるインデックス付き抽出
NumPy で多次元配列を操作する場合、多くの場合、インデックスに基づいて特定の要素を抽出する必要があります。これに関して、配列 (B) が別の配列 (A) の 2 番目の次元のインデックスとして機能する特定のシナリオが発生する可能性があります。
2 つの配列 A と B を使用した例を考えてみましょう。
A = np.array([[0,1], [2,3], [4,5]]) B = np.array([[1], [0], [1]], dtype='int')
私たちの目標は、A の各行から 1 つの要素を抽出することです。要素インデックスは、B の対応する要素によって決まります。目的の出力は:
C = np.array([[1], [2], [5]])
整数配列インデックス付けを使用した解決策:
B をブロードキャストする代わりに、NumPy の純粋な整数配列インデックス付けを使用できます:
A[np.arange(A.shape[0]),B.ravel()]
ここで、np.arange(A.shape[0]) は次の配列を作成します。インデックスは A の行数に対応し、B.ravel() は B を 1D 配列に平坦化します。これらを組み合わせることで、A から適切な要素を抽出できます。
サンプル実行:
print(A) print(B) print(A[np.arange(A.shape[0]),B.ravel()])
出力:
[[0 1] [2 3] [4 5]] [[1] [0] [1]] [1 2 5]
このアプローチは、抽出問題に対する簡潔かつ効率的な解決策を提供します。
以上が整数配列のインデックス付けを使用して NumPy 配列から要素を抽出する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。