📅  最后修改于: 2023-12-03 15:04:06.778000             🧑  作者: Mango
numpy.frombuffer()
是一个 NumPy 函数,用于将任意对象转换为 NumPy 数组。它从缓冲区创建一个新的 1 维数组,该缓冲区通常是一个 buffer-like 对象,如字节字符串。可以通过设置 dtype 参数来指定所创建数组的数据类型。
numpy.frombuffer(buffer, dtype=float, count=-1, offset=0)
参数说明:
buffer
:缓冲区对象,可以是字节字符串或类似对象的缓冲区。dtype
:返回数组的数据类型,默认为float
。count
:要从缓冲区中读取的项目数,默认为 -1
,表示读取整个缓冲区。offset
:缓冲区的起始位置偏移,默认为 0
。numpy.frombuffer()
函数返回一个新的 1 维数组。
下面是一个使用 numpy.frombuffer()
函数的示例:
import numpy as np
buffer = b'Hello World'
arr = np.frombuffer(buffer, dtype='S1')
print(arr)
输出:
[b'H' b'e' b'l' b'l' b'o' b' ' b'W' b'o' b'r' b'l' b'd']
在上面的示例中,我们从字节字符串 b'Hello World'
创建了一个新的 1 维数组。通过将 dtype
参数设置为 'S1'
,我们指定了数组的数据类型为 1 字节的字符串。因此,输出结果是一个字符串数组,每个字符都被存储为一个单独的元素。
除了字节字符串,我们还可以使用其他 buffer-like 对象,如 ndarray
、bytes
、memoryview
等等,作为参数传递给 numpy.frombuffer()
函数。
import numpy as np
arr = np.array([1, 2, 3, 4, 5], dtype='i4')
buffer = arr.tobytes()
new_arr = np.frombuffer(buffer, dtype='i4')
print(new_arr)
输出:
[1 2 3 4 5]
在上述示例中,我们将一个 4 字节整数数组转换为字节字符串,并通过 numpy.frombuffer()
函数将其转换回原始整数数组。
numpy.frombuffer()
函数只是从缓冲区创建了一个新的数组对象,并不生成缓冲区的副本。因此,对返回的数组对象的修改也会修改原始缓冲区的内容。