0
我使用ndarray.tobytes(order='F')
在Python中保存了矩阵。在Fortran中阅读在Python中使用tobytes保存的矩阵
f_mat = open('mat.dat', 'wb')
f_mat.write(matrix.tobytes('F'))
f_mat.close()
在Fortran中是否有快速读取它的方法,或者我应该做一个for循环并找出元素的顺序?
我使用ndarray.tobytes(order='F')
在Python中保存了矩阵。在Fortran中阅读在Python中使用tobytes保存的矩阵
f_mat = open('mat.dat', 'wb')
f_mat.write(matrix.tobytes('F'))
f_mat.close()
在Fortran中是否有快速读取它的方法,或者我应该做一个for循环并找出元素的顺序?
如果你知道的大小(n
时间m
)和数组的类型,并相应地把它声明:
!just an example
real(c_double), allocatable :: mat(:,:)
allocate(mat(n,m))
应该只是
open(newunit = u, file='mat.dat', access='stream', form='unformatted', status='old', action='read')
read(u) mat
close(u)
的参数open
access='stream'
后的可选的。
对不起,但在Fortran(至少比较老的)中,如果你使用二进制,你真的需要知道字节记录的大小以及你写数据的顺序。 – 098799
不一定是记录,但你应该知道你实际在读什么。字节意味着什么。如果你知道大小和类型,它应该只是一个读取语句。 –
是的,这就是我要找的。我知道我的矩阵是一个3600 x 7200的矩阵,在python中有浮点数。然而,我不知道如何告诉Fortran从二进制文件读取矩阵......我总是每次使用一个变量的读取语句,如 (10,END = 999,ERR = 1000)realvalue – spec3