在Fortran中读取用Python中的tobytes保存的矩阵

在Fortran中读取用Python中的tobytes保存的矩阵,python,numpy,fortran,binaryfiles,Python,Numpy,Fortran,Binaryfiles,我使用ndarray.tobytes(order='F')在Python中保存了一个矩阵 有没有一种用Fortran快速阅读的方法,或者我应该做一个for循环并计算出元素的顺序 如果您知道数组的大小(ntimem)和类型,并相应地声明它: !just an example real(c_double), allocatable :: mat(:,:) allocate(mat(n,m)) 它应该是公正的 open(newunit = u, file='mat.dat', access='str

我使用
ndarray.tobytes(order='F')
在Python中保存了一个矩阵

有没有一种用Fortran快速阅读的方法,或者我应该做一个for循环并计算出元素的顺序

如果您知道数组的大小(
n
time
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)
access='stream'
之后的
open
参数是可选的。

如果您知道数组的大小(
n
time
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)

access='stream'
之后的
open
参数是可选的。

对不起,在Fortran(至少是旧版本)中,如果使用二进制,您确实需要知道记录的字节大小以及写入数据的顺序。不一定是记录,但您应该知道实际读取的内容。字节是什么意思。如果你知道它的大小和类型,它应该只是一个读语句。是的,这就是我要找的。我知道我的矩阵是一个3600 x 7200的矩阵,在python中带有浮点数。然而,我不知道如何告诉Fortran从二进制文件中读取矩阵……我每次总是对一个变量使用read语句,比如read(10,END=999,ERR=1000)realValue抱歉,但在Fortran中(至少是旧的)如果你使用二进制,你真的需要知道记录有多大(以字节为单位)以及你写数据的顺序。不一定是记录,但你应该知道你实际上在读什么。字节是什么意思。如果你知道它的大小和类型,它应该只是一个读语句。是的,这就是我要找的。我知道我的矩阵是一个3600 x 7200的矩阵,在python中带有浮点数。然而,我不知道如何告诉Fortran从二进制文件中读取矩阵……我每次总是对一个变量使用read语句,比如read(10,END=999,ERR=1000)realvalue