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