3

2 つの多次元配列があり、1 つをインデックスとして使用して新しい多次元配列を生成したいと考えています。例えば:

a = array([[4, 3, 2, 5],
           [7, 8, 6, 8],
           [3, 1, 5, 6]])

b = array([[0,2],[1,1],[3,1]])

b の最初の配列を使用して、a の最初の配列にあるインデックス付きの要素を返したい、などです。だから私は出力を次のようにしたい:

array([[4,2],[8,8],[6,1]])

これはおそらく単純ですが、検索しても答えが見つかりませんでした。ありがとう。

4

1 に答える 1

2

これは少しトリッキーですが、次のようにします。

>>> a[np.arange(3)[:, np.newaxis], b]
array([[4, 2],
       [8, 8],
       [6, 1]])

配列の行と列の両方にインデックスを付ける必要があるaため、配列に一致させるにbは、次のような配列が必要になります。

rows = np.array([[0, 0],
                 [1, 1],
                 [2, 2]])

そして、a[rows, b]あなたが求めているものを明らかに返すでしょう。上記のようにブロードキャストに依存して同じ結果を得ることができ、rows配列をに置き換えます。np.arange(3)[:, np.newaxis]これは と同等np.arange(3).reshape(3, 1)です。

于 2013-09-24T21:02:42.717 に答える