2017-06-22 91 views
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循環並找出元素的順序?

+0

對不起,但在Fortran(至少比較老的)中,如果你使用二進制,你真的需要知道字節記錄的大小以及你寫數據的順序。 – 098799

+0

不一定是記錄,但你應該知道你實際在讀什麼。字節意味着什麼。如果你知道大小和類型,它應該只是一個讀取語句。 –

+0

是的,這就是我要找的。我知道我的矩陣是一個3600 x 7200的矩陣,在python中有浮點數。然而,我不知道如何告訴Fortran從二進制文件讀取矩陣......我總是每次使用一個變量的讀取語句,如 (10,END = 999,ERR = 1000)realvalue – spec3

回答

2

如果你知道的大小(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) 

的參數openaccess='stream'後的可選的。