gpt4 book ai didi

python - 使用 numpy 读/写 Fortran 顺序数组的正确方法

转载 作者:行者123 更新时间:2023-11-28 19:23:52 27 4
gpt4 key购买 nike

我正在编写一个应用程序,该应用程序读取包含 fortran 排序数组的 ascii 文件,修改值,然后以 ascii 格式(以 fortran 顺序)写回该数据。将该数组读入 numpy 的正确方法是什么,表示该数组是按 fortran 顺序排列的,然后以 Fortran 顺序写回数据?

假设我有一个包含以下 ascii 文本的文件:

0.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0

这些数字代表以 fortran 顺序编写的 2x2x2 数组。

ascii 格式比上面的要复杂一点。然而,只要说这种格式不太适合使用任何自动 numpy ascii 加载器(如 numpy.loadtxt 等)就够了。

我正在执行类似于以下的行来创建数组:

x = numpy.array([0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0], order='F')

我知道这是低效的,并且会进行大量额外的数据复制等操作。不过我更担心顺序问题。

因此,我认为此时 x 在内存中像 Fortran 数组一样有序。现在,当我导出这个数组时,我应该使用 numpy.nditer(x, order='F') 吗?

最佳答案

考虑以下几点:

In [11]: x = numpy.array([0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0])

In [12]: xf = x.reshape((2, 2, 2), order='F')

此处,xfx 上的2x2x2 Fortran 排序 View 。你可以修改它,x 会相应地改变:

In [22]: xf[0,:,1] = [11, 12]

In [23]: x
Out[23]: array([ 0., 1., 2., 3., 11., 5., 12., 7.])

导出 x 将保留原始顺序。

关于python - 使用 numpy 读/写 Fortran 顺序数组的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17796343/

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