当我们需要处理大量的同一类型数据,例如像图像、声音、短语等二进制数据时,使用二进制数据格式来存储这些数据是更加高效、灵活和低成本的方法。Python 作为一门强大的解释型语言,完全支持二进制数据的读写。下面是 Python 如何读写二进制数组数据的完整攻略。
numpy包
numpy包是 python 的一个扩展程序库, 支持大量高维数组与矩阵运算, 并对数组运算提供了大量的数学函数库。它可以帮助我们快速轻松地进行二进制数组数据的读写。
- 读取二进制文件
import numpy as np
# 读取二进制文件
data = np.fromfile('binary_data.bin', dtype=np.float32)
print(data)
在上述代码段中,我们首先导入了 numpy 库,并使用 numpy.fromfile()
方法读取二进制文件,其中参数 dtype
表示二进制文件中每个数据的类型。本例中我们指定类型为 32 位的浮点数。最后将读出的数据保存在变量 data
中,最后输出到控制台。
- 写入二进制文件
import numpy as np
# 创建数据数组
data = np.array([1.1, 2.2, 3.3], dtype=np.float32)
# 写入二进制文件
data.tofile('binary_data.bin')
在上述代码段中,我们首先导入了 numpy 库,并使用 numpy.array()
方法创建了一个含有 3 个元素的数组,并指定数据类型为 32 位浮点数。将数据保存在变量 data
中,然后使用 numpy.ndarray.tofile()
方法将数组写入二进制文件中。
struct模块
struct 是Python内置的一个模块,它提供了一个 pack 和 unpack 函数,能够用指定的格式来转换二进制数据。
- 读取二进制文件
import struct
# 读取二进制文件
with open('binary_data.bin', 'rb') as f:
content = f.read()
data = struct.unpack('f' * (len(content)//4), content)
print(data)
在上述代码段中,我们使用 open()
函数打开二进制文件,并使用 read()
函数读取其中的数据。我们使用了 len(content)//4
来计算文件中有多少个 32 位数字节。最后使用 struct.unpack() 函数解包了读出的二进制数据,参数 'f' 表示读取的数据类型为 32 位的浮点数。
- 写入二进制文件
import struct
# 创建数据数组
data = [1.1, 2.2, 3.3]
# 写入二进制文件
with open('binary_data.bin', 'wb') as f:
for num in data:
f.write(struct.pack('f', num))
在上述代码段中,我们使用 open()
函数打开二进制文件,并使用 write()
函数循环写入二进制数组。我们使用了 struct.pack()
函数把数据转成相应的二进制数据格式。参数 'f' 表示写入的数据类型为 32 位浮点数。
至此,我们已经介绍了如何使用 numpy 和 struct 两个常见的 Python 包进行二进制数组数据的读写。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python如何读写二进制数组数据 - Python技术站