Создание пустого массива из байтов, упакованных с помощью struct - PullRequest
0 голосов
/ 29 июня 2018

Следующий фрагмент кода 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 голосов
/ 29 июня 2018

Вы можете обойти это в 1.14, используя frombuffer

>>> np.frombuffer(np.array(arr), dt)
array([(1, 3), (2, 4)], dtype=[('n', '<i4'), ('m', '<i4')])

Я считаю это связано с изменениями fromstring, которые появились в numpy 1.14, хотя я был бы признателен, если бы кто-то смог проверить .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...