Несколько проблем с тем, что вы делаете:
frombuffer
всегда будет интерпретировать входные данные как одномерный массив. Это первая строка документации . Таким образом, вам придется изменить форму, чтобы быть (28, 28)
.
По умолчанию dtype
равно float
. Поэтому, если вы не сериализовали числа с плавающей запятой, вам придется указать dtype
вручную (априори никто не может сказать, что означает поток байтов: вы должны сказать, что они представляют).
Если вы хотите убедиться, что массивы равны, вы должны использовать 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
НТН.