以Fortran连续顺序重塑numpy.array

时间:2013-08-27 12:25:16

标签: python arrays numpy reshape

我有一个如下的数组,

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

我希望获得如下结果

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

因为我有一个大阵容。所以我需要一种有效的方法来做到这一点。 最好将其重新整形。

2 个答案:

答案 0 :(得分: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]])

答案 1 :(得分:4)

您可以使用reshape并将订单参数更改为FORTRAN(列主要)顺序:

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