Python:ndarray.flatten('F')有反向操作吗?
比如说:
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]]
呢?
3 个回答
0
对于任何想要用简单优雅的纯Python一行代码来解决这个问题的人:
arr2d = [[arr1d[i+j*width] for i in range(width)] for j in range(height)]
18
这看起来简单多了。只需要把原来的形状传回去进行重新调整。
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]])
27
在编程中,有时候我们会遇到一些问题,比如代码运行不正常或者出现错误。这种时候,我们需要去查找原因,看看哪里出了问题。通常,我们会在网上寻找解决方案,比如在StackOverflow这样的论坛上提问或者搜索。
在提问时,最好能把自己的问题描述清楚,包括你遇到的错误信息、你使用的代码片段,以及你希望实现的目标。这样,其他人才能更好地理解你的问题,并给出有效的建议。
同时,查看别人遇到的类似问题和解决方案也是一个很好的学习方式。通过这些经验,我们可以更快地找到解决问题的方法,提升自己的编程能力。
总之,遇到问题时不要慌张,耐心分析,积极寻求帮助,最终你会找到解决方案的。
>>> a = numpy.array((1, 3, 5, 2 ,4, 6))
>>> a.reshape(2, -1).T
array([[1, 2],
[3, 4],
[5, 6]])
>>>