【发布时间】:2016-12-17 19:59:19
【问题描述】:
我有一些具有特定序列的32x32x8192 二进制数据文件,我想知道。
我如何在Python 3x. 中读取它该文件由Nx × Ny × Nz 数字(浮点单精度)组成。
数字顺序对应indexes x, y and z,分别从1 to Nx, Ny and Nz依次递增。
变化最快的索引是z,其次是y,变化最慢的索引是x。
也就是说,序列中的第一个Nz 数字对应于索引x = 1, y = 1,并且z 从1 to Nz 增加。
np.fromfile("turbine_32x32x8192.bin", dtype=float, count=10, sep="")的数据样本:
[ -8.26325563e+02 -7.41263867e+00 -1.52541103e+01 -1.83999292e+03
-7.53629982e+03 -3.43120688e+05 -1.88674962e+04 -1.81482768e+00
-4.13878029e+03 -8.29483377e+05]
【问题讨论】:
-
好的。你对此做了什么?您是否有想要使用的包,例如
numpy?你知道如何将文件读入你选择的包中吗?您是否尝试自己实现它?如果这些问题中的任何一个的答案是否定的,请继续努力,真正陷入困境然后问。开始新事物是令人生畏的,但事情相当容易。 -
我已经阅读了文件:np.fromfile("turbine_32x32x8192.bin", dtype=float, count=-1, sep="")。但我想创建一个包含 3 列的格式,每列分别命名为 Nx、Ny 和 Nz,可能在 pandas 数据框中。
-
好的。您文件中的数据如何?根据您的问题,我假设您有
Nx个文件,每个文件都有Nz x Ny行和列。如果是这种情况,您将不得不在循环中读取数据并随时追加。尝试使用np.zeros((Nx, Ny, Nz))作为初始化矩阵。读取一个文件,并将其存储在数组中,循环中一次一个Nx。 -
如果你想在 pandas 中阅读它,你仍然需要一个循环。但是,我不知道可以读取二进制文件的 pandas 方法,除非它是 csv 二进制文件。如果它基于 csv,您可以尝试
[pd.read_csv(file) for file in files]获取包含所有文件的 DataFrame 列表。这个列表,你可以convert to a Panel 或者你可以concatenate 得到一个更大的DataFrame 将所有的值都放在里面。 -
读取二进制文件时,它不是结构化的,只是一个列表。
标签: python pandas numpy binary