我正在以NxMxL矩阵的二进制格式编写输出Fortran数据,如下所示
open(94, file = 'mean_flow_sp.dat', status = 'replace', action = 'write', form = 'unformatted')
do k = 0,L-1
do j = 0,M-1
do i = 0,N-1
write(94) u(i,j,k), v(i,j,k), w(i,j,k)
enddo
enddo
enddo
close(94)
其中u, v, w
是分配为例如单个精度值的单精度值。 u(0:N-1,0:M-1,0:L-1)
。然后我用Python读取输出文件,如下所示
f = open('mean_flow_sp.dat', 'rb')
data = np.fromfile(file=f, dtype=np.single).reshape(N,M,L)
f.close()
我注意到的第一个奇怪的事情是输出的Fortran文件长度为10,066,329,600字节(这是使用L = 640,M = 512,N = 1536)。所以问题是为什么这个文件不是1536 * 512 * 640 * 3(变量)* 4(字节)= 6,039,797,760字节长?
显然,Python脚本在尝试重新整形读取数据时会抛出错误,因为它的大小不是NxLxM x3(单精度)。
为什么输出文件太大了?