首页 > 解决方案 > numpy 尝试读取多列二进制文件

问题描述

我有一个 numpy 文件,我想从一个文件中读取 3 个单独的数据列。我通过三个单独的数组创建数据,其中 data1 = 浮点数,data2 = data3 = string。数据保存如下:

np.save(信息文件,[data1,data2,data3])

我可以使用以下命令读取文件并加载数据:

data1, data2, data3 = np.load(infofile)

其中 data1 将是一个浮点值,而 data2 和 data3 是字符串。每个将有约 1,000 行长。当我尝试查看数据时,我得到:

print(data1[0])
b'0.0'
print(data2[0])
b'10000'
print(data3[0])
b'20190831.230000'

我知道数据是二进制的,所以如何从所有数据中删除前面的“b”,它看起来像:

print(data1[0])
0.0
print(data2[0])
'10000'
print(data3[0])
'20190831.230000'

标签: pythonnumpybinary

解决方案


解决方案是对数据进行解码。utf-8 是一种常见的编码,但如果您使用另一种编码,请使用该编码解码数据。

print(data1[0].decode("utf-8"))

会给:

'0.0'

对于列表中的每个元素:

data1 = [float(item.decode("utf-8")) for item in data1]
data2 = [item.decode("utf-8") for item in data2]
data3 = [item.decode("utf-8") for item in data3]

它将解码列表中的每个元素,对于 data1,它将元素解析为浮点数。


推荐阅读