Преобразовать массив байтов обратно в массив NumPy - PullRequest
0 голосов
/ 19 ноября 2018

Вы можете преобразовать числовой массив в байты, используя функцию .tobytes().

Как декодировать его обратно из этого байтового массива в массив numpy?Я пытался, как это для массива я формы (28,28)

>>k=i.tobytes()

>>np.frombuffer(k)==i

False

также пытался са также uint8.

1 Ответ

0 голосов
/ 19 ноября 2018

Несколько проблем с тем, что вы делаете:

  1. frombuffer всегда будет интерпретировать входные данные как одномерный массив. Это первая строка документации . Таким образом, вам придется изменить форму, чтобы быть (28, 28).

  2. По умолчанию dtype равно float. Поэтому, если вы не сериализовали числа с плавающей запятой, вам придется указать dtype вручную (априори никто не может сказать, что означает поток байтов: вы должны сказать, что они представляют).

  3. Если вы хотите убедиться, что массивы равны, вы должны использовать np.array_equal. Использование == выполнит поэлементную операцию и вернет массив numpy bools (вероятно, это не то, что вам нужно).

Как декодировать его обратно из этого байтового массива в массив numpy?

Пример: * * тысяча тридцать-один

In [3]: i = np.arange(28*28).reshape(28, 28)

In [4]: k = i.tobytes()

In [5]: y = np.frombuffer(k, dtype=i.dtype)

In [6]: y.shape
Out[6]: (784,)

In [7]: np.array_equal(y.reshape(28, 28), i)
Out[7]: True

НТН.

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