2011-03-03 169 views
5

根據docs numpy的默認行爲是索引數組首先由行,然後按列:numpy的 - 二維數組索引

a = numpy.arange(6).reshape(3,2) 

[[0 1] 
[2 3] 
[4 5]] 

print a[0][1] # is 1 

我想指數採用幾何導向,約定a[x][y]的陣列,如X-軸和y軸。如何在不修改陣列形狀的情況下更改索引順序,以便a[0][1]返回2?

+0

我借用了文檔中的術語(請參閱鏈接):「矩陣表示法使用第一個索引來指示哪一行正在被選中,第二個索引用於指示哪一列被選中,這與面向幾何學的約定相反人們通常認爲第一個索引代表x位置(即,列),第二個代表y位置(即,行)的圖像「 – armandino 2011-03-03 07:58:53

+0

沒關係,正在想別的東西。 – NullUserException 2011-03-03 08:00:26

+3

就像一個說明,索引多維數組時,您應該使用符號a [i,j]而不是[i] [j]。我在我的機器上發現後者慢了2倍。 – JoshAdel 2011-03-03 12:55:36

回答

8

您可以編寫a.T[0,1]以使用數組轉置的索引,這是2D中的另一種方式。

+0

這是否會在每次使用此表示法訪問時創建一個新的轉置陣列? – armandino 2011-03-03 16:05:21

+2

'.T'僅創建原始數組的視圖,因此您不復制數據。它應該是相對較快的。 – JoshAdel 2011-03-03 16:06:49

+0

明白了。再次感謝! – armandino 2011-03-03 16:11:27