以下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
下一样进行操作。
答案 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
有关,但是如果有人可以验证,我将不胜感激。