簡體   English   中英

Numpy 中的二維數組索引二維數組

[英]Indexing 2d array with 2d array in Numpy

我有一個問題困擾了我幾天。 假設我們在 Numpy 中定義了一個二維數組:

x = np.array([[0, 1, 2],
              [3, 4, 5],
              [6, 7, 8]])

我們還定義了一個用於索引的一維數組,比方說:

ind = np.array([2,1])

如果我們嘗試x[ind]我們將得到:

array([[6, 7, 8],
       [3, 4, 5]])

這很有意義: x的第 2 行和第 1 行。

如果我們運行: x[:,ind]我們將得到:

array([[2, 1],
       [5, 4],
       [8, 7]])

同樣,這很有意義 - 我們收到第 2 列,然后是第 1 列

現在我們將索引數組定義為 2d:

ind = np.array([[2,1],
                [2,2]])

如果我們運行x[ind]我們得到:

array([[[6, 7, 8],
        [3, 4, 5]],

       [[6, 7, 8],
        [6, 7, 8]]])

同樣,這是有道理的——對於索引二維數組中的每一行,我們都會收到一個二維數組,它代表原始二維數組x中的相應行。

但是,如果我們運行x[:,ind]我們會收到下一個數組:

array([[[2, 1],
        [2, 2]],

       [[5, 4],
        [5, 5]],

       [[8, 7],
        [8, 8]]])

我不明白這個 output 因為它返回索引行中的特定項目,但不是完整行。 我會假設,就像x[:,ind]是一維數組時的情況一樣,我們將收到 2d arrays ,其中包括來自原始x數組的原始列。

在索引數組的最后一種情況下:

print(ind)
array([[2, 1],
       [2, 2]])

由於ind是一個形狀為(2,2)2D數組,並且您沿第一個軸取一個完整的切片,因此您將使用ind在其每一行上沿A的列進行索引。 因此,例如,通過使用ind索引第二行[3, 4, 5] ,您將再次獲得索引2->51->42->52->5處的元素,結果形狀與ind相同,因此[[5,4][5,5]]

它的每一行都相同,從而產生(3,2,2)形狀的陣列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM