从用struct打包的字节制作一个numpy数组

时间:2018-06-28 22:28:21

标签: python numpy

以下python代码:

import numpy as np
import struct

arr = []
arr.append(struct.pack('ii', 1, 3))
arr.append(struct.pack('ii', 2, 4))
dt = np.dtype([('n','i4'),('m','i4')])

a = np.array(arr,dt)
print(a)

[(1, 3) (2, 4)]版本Numpy下返回1.13.3(如我所料),但是在版本1.14.5下返回失败:

a = np.array(arr,dt)  
ValueError: invalid literal for int() with base 10: b'\x01\x00\x00\x00\x03\x00\x00\x00'

这是功能还是错误?我希望在1.14.5下可以像在1.13.3下一样进行操作。

1 个答案:

答案 0 :(得分:0)

您可以使用 1.14

frombuffer 中解决此问题
>>> np.frombuffer(np.array(arr), dt)
array([(1, 3), (2, 4)], dtype=[('n', '<i4'), ('m', '<i4')])

相信这与numpy 1.14中出现的changes to fromstring有关,但是如果有人可以验证,我将不胜感激。