我有一个浮点数列表,我想把它转换成字节。能请一些帮助我做到这一点。例如
l = [[0.1, 1.0, 2.0], [2.0, 3.1, 4.1]]
我想要的是
bytes(l) -> b'\x01\x02\x03.......'
llew8vvj1#
由于您已标记了此numpy,因此它只是tobytes
numpy
tobytes
a = np.array(l) a.tobytes()
b'\x9a\x99\x99\x99\x99\x99\xb9?\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\x00@\x00\x00\x00\x00\x00\x00\x00@\xcd\xcc\xcc\xcc\xcc\xcc\x08@ffffff\x10@'
可以使用frombuffer将此结果重新处理为ndarray,但不会保持原始形状。
frombuffer
ndarray
bqjvbblv2#
希望这是你想要的:
import struct input = [[0.1, 1.0, 2.0], [2.0, 3.1, 4.1]] outs = list() string = "" for i in input: for j in i: outs.append(bytes(struct.pack("f", j))) for i in outs: string += str(i) print(i) print('Bytes:', string)
v64noz0r3#
这才是问题的正确答案。有内置的Python解决方案不需要依赖于numpy,这就是最初的问题所问的。以下是正确的解决方案:首先:将列表的列表转换为单个列表,使用
from itertools import chain matrix = [[1,2,3,4],[5,6,7,8]] array_1d = list(chain.from_iterable(matrix)) assert array_1d == [1, 2, 3, 4, 5, 6, 7, 8]
下一步:将Python原生类型列表(本例中为int)转换为字节:
b = bytes(array_1d) assert b == b'\x01\x02\x03\x04\x05\x06\x07\x08'
3条答案
按热度按时间llew8vvj1#
由于您已标记了此
numpy
,因此它只是tobytes
可以使用
frombuffer
将此结果重新处理为ndarray
,但不会保持原始形状。bqjvbblv2#
希望这是你想要的:
v64noz0r3#
这才是问题的正确答案。有内置的Python解决方案不需要依赖于numpy,这就是最初的问题所问的。以下是正确的解决方案:
首先:将列表的列表转换为单个列表,使用
下一步:将Python原生类型列表(本例中为int)转换为字节: