考慮以下 numpy 陣列。
a = np.random.randn(10, 3, 20)
當我按如下方式索引陣列時,它會生成另一個具有預期形狀的陣列
b = a[0, :, 0:5]
b.shape = (3, 5)
但是當我用另一個 numpy 陣列索引它但具有相似元素時,它會產生一個不同的陣列,它是上述結果的轉置。
j = np.arange(0, 5, 1)
b = a[0, :, j]
b.shape = (5, 3)
我不明白為什么會這樣。
uj5u.com熱心網友回復:
蒂姆·羅伯茨(Tim Roberts) 在評論中對其進行了出色的總結,如果評論被清理,我將在此處參考:
這是微妙的。第二個例子是連接一組切片。如果你 print
a[0,:,0],你會看到一個 3 元素的切片,等于最后 b 的第一行。與 相同a[0,:,1]。魔術索引采用這 5 個 3 元素切片,然后在一個新陣列中回傳。一組 5 個切片與 中的陣列子集不同a[0,:,0:5]。
此外,如果您注意到,這兩種不同的索引方法實際上會產生相同的結果;它們只是彼此的換位版本。所以a[0, :, np.arange(5)] == a[0, :, 0:5].T和a[0, :, np.arange(5)].T == a[0, :, 0:5]。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/444398.html
