【发布时间】:2020-01-15 14:01:06
【问题描述】:
我已经定义了一个 Fortran 连续数组:
import numpy as np
hp = np.zeros([number_fragments, max(length_fragments_list), 6], order='F')
此数组的切片不是 Fortran 连续的。我该如何解决?
hn = hp[0,0:Length-1,:]
hn.flags
C_CONTIGUOUS : False
F_CONTIGUOUS : False
also
hn = hp[0,0:Length-1,:].copy()
hn.flags
C_CONTIGUOUS : True
F_CONTIGUOUS : False
如何在切片后轻松获得 Fortran 连续数组?
【问题讨论】:
-
我通常不关注
flags属性。了解strides更好。有时我也会看hn.__array_interface__。 -
谢谢。不幸的是,当我将切片数组发送到 Fortran 包装函数时,它说输入不是 Fortran 连续的。所以,它需要修复。
-
使用“F”顺序,最后一个维度是外部维度。像
hp[:,:-1, 0]这样的索引保持'F' 连续性(但会破坏最初'C' 数组的'C' 连续性)。copy接受订单参数。
标签: python arrays numpy f2py contiguous