首页 > 解决方案 > 在 python 中读取二进制文件并绘图

问题描述

我正在使用 Fortran 代码生成二进制数据。如何读取这些数据,将其转换为浮点数并在 Python 中绘制?

我在 Fortran90 中有以下代码,它在二进制文件中输出向量 u 数据。

program test
implicit none
  integer :: i, n
  real, allocatable :: u(:)

  n = 720
  allocate(u(0:n))

  !Set the data
  do i = 0, n
    u(i) =  exp(-(i-360.0)**2/200.0)
  end do

  !Save the data in a binary file
  open(3,file='exp.dat',form='unformatted',access='sequential')
  write(3) u
  close(3)

  deallocate(u)  
end program test

然后我运行这个程序并得到一个名为“exp.dat”的二进制文件。我在 Python3 中编写了以下脚本来从 'exp.dat' 中读取数据并将其转换为浮点数。

import numpy as np
filename = 'exp.dat'
data = np.fromfile(filename, 'float32')
print(np.shape(data))

但是,当我运行这个脚本时,我得到

(723,)

我期望 (721,) 因为我们在“exp.dat”中写入了长度为 721 的向量的值。查看变量数据中的值后,我意识到从字节到浮点的转换无法正常工作。我还尝试查看该脚本如何适用于不同的数据集,并且得到了相同的结果。

我该如何解决?有没有一种简单的方法来读取这个二进制数据并将其转换为浮点数?

标签: pythonfortranbinaryfiles

解决方案


推荐阅读