【发布时间】:2011-02-23 03:46:06
【问题描述】:
例如:
from numpy import *
x = array([[1,2], [3, 4], [5, 6]])
print x.flatten('F')
>>>[1 3 5 2 4 6]
是否可以从[1 3 5 2 4 6]得到[[1,2], [3, 4], [5, 6]]?
【问题讨论】:
例如:
from numpy import *
x = array([[1,2], [3, 4], [5, 6]])
print x.flatten('F')
>>>[1 3 5 2 4 6]
是否可以从[1 3 5 2 4 6]得到[[1,2], [3, 4], [5, 6]]?
【问题讨论】:
>>> a = numpy.array((1, 3, 5, 2 ,4, 6))
>>> a.reshape(2, -1).T
array([[1, 2],
[3, 4],
[5, 6]])
>>>
【讨论】:
这似乎更简单一些。只需将原始形状传回重塑即可。
import numpy as np
np.array([[1,2], [3, 4], [5, 6]]).flatten().reshape((3, 2))
array([[1, 2],
[3, 4],
[5, 6]])
对于您的 Fortran 排序,将“F”传递给重塑顺序:
import numpy as np
np.array([[1,2], [3, 4], [5, 6]]).flatten('F').reshape((3, 2), order='F')
array([[1, 2],
[3, 4],
[5, 6]])
【讨论】:
对于任何寻找优雅的纯 python oneliner 来解决这个问题的人:
arr2d = [[arr1d[i+j*width] for i in range(width)] for j in range(height)]
【讨论】: