gpt4 book ai didi

python - 将二进制字符串转换为numpy数组

转载 作者:IT老高 更新时间:2023-10-28 22:21:48 30 4
gpt4 key购买 nike

假设我有字符串:

my_data = '\x00\x00\x80?\x00\x00\x00@\x00\x00@@\x00\x00\x80@'

我从哪里得到它无关紧要,但为了具体一些,假设我从二进制文件中读取它。

我知道我的字符串是 4 个(4 字节) float 的二进制表示。我想将这些 float 作为一个 numpy 数组。我可以这样做:

import struct
import numpy as np
tple = struct.unpack( '4f', my_data )
my_array = np.array( tple, dtype=np.float32 )

但是创建一个中间元组似乎很愚蠢。有没有办法在不创建中间元组的情况下执行此操作?

编辑

我还希望能够以可以指定字符串的字节顺序的方式构造数组。

最佳答案

>>> np.frombuffer(b'\x00\x00\x80?\x00\x00\x00@\x00\x00@@\x00\x00\x80@', dtype='<f4') # or dtype=np.dtype('<f4'), or np.float32 on a little-endian system (which most computers are these days)
array([ 1., 2., 3., 4.], dtype=float32)

或者,如果你想要大端:

>>> np.frombuffer(b'\x00\x00\x80?\x00\x00\x00@\x00\x00@@\x00\x00\x80@', dtype='>f4') # or dtype=np.dtype('>f4'), or np.float32  on a big-endian system
array([ 4.60060299e-41, 8.96831017e-44, 2.30485571e-41,
4.60074312e-41], dtype=float32)

b 在 Python 3 之前当然不是必需的。

事实上,如果你真的使用二进制文件来加载数据,你甚至可以跳过 using-a-string 步骤,直接使用 numpy.fromfile().

另外,dtype 引用,以防万一:http://docs.scipy.org/doc/numpy/reference/arrays.dtypes.html

关于python - 将二进制字符串转换为numpy数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11760095/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com