我正在编写一个应用程序,该程序读取一个带有Fortran排序数组的ascii文件,修改值,然后以Fortran顺序将数据写回(以ascii格式)。那么在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')
吗?
x
已经像 Fortran 数组一样排序,那么在nditer
中不需要使用order
(默认情况下,它按内存顺序迭代)。 - nneonneo