我正在尝试将多个 Numpy 数组的字节连接成一个bytearray
,以便在 HTTP 发布请求中发送它。
我能想到的最有效的方法是创建一个足够大的bytearray
对象,然后将所有 numpy 数组中的字节连续写入其中。
代码将如下所示:
list_arr = [np.array([1, 2, 3]), np.array([4, 5, 6])]
total_nb_bytes = sum(a.nbytes for a in list_arr)
cb = bytearray(total_nb_bytes)
# Too Lazy Didn't do: generate list of delimiters and information to decode the concatenated bytes array
# concatenate the bytes
for arr in list_arr:
_bytes = arr.tobytes()
cb.extend(_bytes)
该方法tobytes()
不是零拷贝方法。它将 numpy 数组的原始数据复制到一个bytes
对象中。
在 python 中,缓冲区允许访问内部原始数据值(这在 C 级别称为协议缓冲区) Python 文档;numpy 在 numpy1.13 中有这种可能性,该方法称为getbuffer()
link。然而,这种方法已被弃用!
这样做的正确方法是什么?