2013-08-27 42 views
4

一個numpy.array我有一個像跟隨陣列,重塑Fortran中連續的順序

from numpy import * 
a=array([1,2,3,4,5,6,7,8,9]) 

我希望得到像下面

[[1,4,7],[2,5,8],[3,6,9]] 

的結果,因爲我有一個大陣。所以我需要一個有效的方法來做到這一點。 最好在原地重塑它。

+0

如果使用fortran-order,要知道幾乎所有對fortran-order中的數組做的操作都會返回一個結果在C順序(也許第一次甚至反式形式爲C順序之前做它的東西),但它是很有趣的知道你可以/想加快它 – usethedeathstar

回答

5

所建議的@ atomh33ls,你可以使用一個重塑路過order='F'和「如果可能的」例如:

a=array([1,2,3,4,5,6,7,8,9]) 
b = a.reshape(3,3, order='F') 

a[0] = 11 

print b 
#array([[ 1, 4, 7], 
#  [ 2, 5, 8], 
#  [ 3, 6, 9]]) 
4

您可以使用reshape和訂單參數更改爲FORTRAN(列爲主)訂單:

a.reshape((3,3),order='F')