Python中numpy.frombuffer函数的使用方法详解
numpy.frombuffer 函数用于从缓冲区(如字节、字节数组或其他支持缓冲区接口的对象)创建一个 NumPy 数组。这个函数对于处理二进制数据或从文件中读取数据特别有用。
语法
numpy.frombuffer(buffer, dtype=float, count=-1, offset=0)
参数
buffer:缓冲区对象,可以是字节、字节数组或其他支持缓冲区接口的对象。
dtype:数据类型,可选参数。默认值为 float。指定返回数组的数据类型。
count:整数,可选参数。读取的数据数量。默认值为 -1,表示读取所有数据。
offset:整数,可选参数。读取数据的起始位置。默认值为 0。
返回值
返回一个 NumPy 数组,包含从缓冲区读取的数据。
示例
以下是一些使用 numpy.frombuffer 的示例:
示例 1:从字节数据创建 NumPy 数组
import numpy as np
# 创建一个字节对象
byte_data = b'\x01\x02\x03\x04\x05\x06\x07\x08'
# 从字节数据创建 NumPy 数组
array = np.frombuffer(byte_data, dtype=np.uint8)
print("从字节数据创建的数组:")
print(array)
输出
从字节数据创建的数组:
[1 2 3 4 5 6 7 8]
示例 2:指定数据类型和读取数量
import numpy as np
# 创建一个字节对象
byte_data = b'\x01\x00\x02\x00\x03\x00\x04\x00'
# 从字节数据创建 NumPy 数组,指定数据类型为 uint16
array = np.frombuffer(byte_data, dtype=np.uint16)
print("指定数据类型为 uint16 的数组:")
print(array)
# 从字节数据创建 NumPy 数组,指定数据类型为 uint16,并只读取前两个元素
array_partial = np.frombuffer(byte_data, dtype=np.uint16, count=2)
print("\n只读取前两个元素的数组:")
print(array_partial)
输出
指定数据类型为 uint16 的数组:
[1 2 3 4]
只读取前两个元素的数组:
[1 2]
示例 3:指定偏移量
import numpy as np
# 创建一个字节对象
byte_data = b'\x01\x02\x03\x04\x05\x06\x07\x08'
# 从字节数据创建 NumPy 数组,指定偏移量为 2
array_with_offset = np.frombuffer(byte_data, dtype=np.uint8, offset=2)
print("指定偏移量为 2 的数组:")
print(array_with_offset)
输出
指定偏移量为 2 的数组:
[3 4 5 6 7 8]
完整代码
import numpy as np
# 示例 1: 从字节数据创建 NumPy 数组
byte_data = b'\x01\x02\x03\x04\x05\x06\x07\x08'
array = np.frombuffer(byte_data, dtype=np.uint8)
print("从字节数据创建的数组:")
print(array)
# 示例 2: 指定数据类型和读取数量
byte_data = b'\x01\x00\x02\x00\x03\x00\x04\x00'
array = np.frombuffer(byte_data, dtype=np.uint16)
print("\n指定数据类型为 uint16 的数组:")
print(array)
array_partial = np.frombuffer(byte_data, dtype=np.uint16, count=2)
print("\n只读取前两个元素的数组:")
print(array_partial)
# 示例 3: 指定偏移量
byte_data = b'\x01\x02\x03\x04\x05\x06\x07\x08'
array_with_offset = np.frombuffer(byte_data, dtype=np.uint8, offset=2)
print("\n指定偏移量为 2 的数组:")
print(array_with_offset)
参考文档:Python numpy.frombuffer函数方法的使用-CJavaPy
作者:weixin_42098295