Python 从Fortran将矩阵打印到文件中

Python 从Fortran将矩阵打印到文件中,python,arrays,matrix,fortran,output,Python,Arrays,Matrix,Fortran,Output,我有一个很大的,通常是正方形的矩阵,我用Fortran计算。在这之后,我需要将这个数组打印成一个.txt或.dat文件,以便Python可以读取它。最初我遇到了一些问题,因为数组的格式一直在更改(这意味着行和列都被弄乱了),但我设法找到了一种方法,通过以下方法在Python中重建数组: 假设我有一个1000 x 1000的矩阵,然后打印出来 open(6,file='/home/alpha_x.dat') do i =1,1000 write(6,'(1000F14.7)')(alpha

我有一个很大的,通常是正方形的矩阵,我用Fortran计算。在这之后,我需要将这个数组打印成一个.txt或.dat文件,以便Python可以读取它。最初我遇到了一些问题,因为数组的格式一直在更改(这意味着行和列都被弄乱了),但我设法找到了一种方法,通过以下方法在Python中重建数组:

假设我有一个1000 x 1000的矩阵,然后打印出来

open(6,file='/home/alpha_x.dat')
do i =1,1000
    write(6,'(1000F14.7)')(alpha_x(i,j), j=1,1000)
end do 
open(5,file='/home/alpha_y.dat')
do i =1,1000
    write(5,'(1000F14.7)')(alpha_y(i,j), j=1,1000)
end do 
之后要用Python阅读本文,我只需使用

np.loadtxt('alpha_x.dat')
alpha_x = np.transpose(alpha_x)#This is required since the row-column order is interchanged in Fortran and Python

这很好,直到我意识到,例如,如果我有一个尺寸为2000 x 2000的矩阵,我用Fortran做所有这些,并用Python读取它,那么这个数组的尺寸是4000 x 1000。我忍不住想,这意味着我用Fortran保存矩阵的方式一定出了问题……似乎矩阵以某种方式被转换为n列x 1000行,不管是什么倍数。如何解决这个问题,以便在Python中用原始维度重建数组

您是否更改输出上的格式(特定于列数)以匹配新的大小?哦,您是指1000F14.7这一位?如果它是一个2000 x 2000的矩阵,你的意思是它应该是2000F14.7?是的。这里还有其他关于如何根据矩阵大小定制格式的问题,这样您就不必一直手动更改。啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊!。。。你是对的…我真的试着搜索那些有处理矩阵输出的好方法的帖子,但是到目前为止还没有找到一个通用的方法…我会继续检查的,我想是的,有很多重复的。现在无法搜索,如果没有其他人在同一时间这样做,可能以后再搜索。您是否更改输出上的格式(特定于列数)以匹配新的大小?哦,您的意思是1000F14.7这一位?如果它是一个2000 x 2000的矩阵,你的意思是它应该是2000F14.7?是的。这里还有其他关于如何根据矩阵大小定制格式的问题,这样您就不必一直手动更改。啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊!。。。你是对的…我真的试着搜索那些有处理矩阵输出的好方法的帖子,但是到目前为止还没有找到一个通用的方法…我会继续检查的,我想是的,有很多重复的。现在无法搜索,如果没有其他人在同一时间这样做,可能以后再搜索。