【发布时间】:2021-06-28 15:33:12
【问题描述】:
我无法读取二进制文件。我有一个 NumPy 数组,
data = array([[ 0. , 0. , 7.821725 ],
[ 0.05050505, 0. , 7.6358337 ],
[ 0.1010101 , 0. , 7.453858 ],
...,
[ 4.8989897 , 5. , 16.63227 ],
[ 4.949495 , 5. , 16.88153 ],
[ 5. , 5. , 17.130795 ]], dtype=float32)
我将此数组写入二进制格式的文件。
file = open('model_binary', 'wb')
data.tofile(file)
现在,我无法从保存的二进制文件中取回数据。我尝试使用numpy.fromfile(),但对我没有用。
file = open('model_binary', 'rb')
data = np.fromfile(file)
当我打印数据时,我得到了[0.00000000e+00 2.19335211e-13 8.33400000e+04 ... 2.04800049e+03 2.04800050e+03 5.25260241e+07],这绝对不是我想要的。
我运行以下代码来检查文件中的内容,
for line in file:
print(line)
break
我得到了b'\x00\x00\x00\x00\......\c1\x07@\x00\x00\x00\x00S\xc5{@j\xfd\n' 的输出,我想它是二进制格式的。
我想从保存的二进制文件中取回数组。任何帮助将不胜感激。
【问题讨论】:
-
你为什么不用np.save?
-
@QuangHoang 实际上,我有一个非常大的文件,因此我希望以二进制格式保存它。
-
使用
data.tofile和np.fromfile时,只需指定文件名(或路径)作为参数。但我不确定为什么 python 文件对象不起作用。也许您在写入后没有关闭流? -
使用
np.fromfile时也可以指定dtype=float32关键字。 -
@SurajS
np.save将文件保存到二进制文件.npy。
标签: python python-3.x numpy binary numpy-ndarray