python - 在 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 的向量的值。查看变量数据中的值后,我意识到从字节到浮点的转换无法正常工作。我还尝试查看该脚本如何适用于不同的数据集,并且得到了相同的结果。
我该如何解决?有没有一种简单的方法来读取这个二进制数据并将其转换为浮点数?
解决方案
推荐阅读
- python - 用文件夹内每个文件中的空格替换句点和逗号,然后打印文件
- javafx - JavaFX LineChart:CategoryAxis 的字符串值被折叠
- javascript - 如何在 Typescript 中获取时间元素的值?
- python - 无法使用 Python 多处理进行大量计算
- python - pandas.Series.str.contains() 没有找到系列中存在的字符串
- docker - 如何解决“apparmor_parser:无法替换“docker-default”错误?
- java - 如何编写junit测试用例解析jsonresponse?
- java - Java流parallelStream如何将多个函数映射到流映射
- php - 如何手动从数据库中获取wordpress用户头像
- python - 通过 pytest xdist 在 python selenium 中并行运行时测试失败,但按顺序运行良好