gpt4 book ai didi

python - 按 Fortran 连续顺序 reshape numpy.array

转载 作者:太空狗 更新时间:2023-10-30 02:04:41 24 4
gpt4 key购买 nike

我有一个像下面这样的数组,

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

我想得到如下结果

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

因为我有一个大数组。所以我需要一种有效的方法来做到这一点。 最好就地 reshape 它。

最佳答案

您可以使用 reshape 传递 order='F'。只要有可能,返回的数组将只是原始数组的一个 View ,没有复制数据,例如:

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

a[0] = 11

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

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

flags 属性可用于检查数组的内存顺序和数据所有权:

print(a.flags)
C_CONTIGUOUS : True
F_CONTIGUOUS : True
OWNDATA : True
WRITEABLE : True
ALIGNED : True
WRITEBACKIFCOPY : False
UPDATEIFCOPY : False

print(b.flags)
C_CONTIGUOUS : True
F_CONTIGUOUS : False
OWNDATA : False
WRITEABLE : True
ALIGNED : True
WRITEBACKIFCOPY : False
UPDATEIFCOPY : False

print(c.flags)
C_CONTIGUOUS : False
F_CONTIGUOUS : True
OWNDATA : False
WRITEABLE : True
ALIGNED : True
WRITEBACKIFCOPY : False
UPDATEIFCOPY : False

关于python - 按 Fortran 连续顺序 reshape numpy.array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18465377/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com