You can convert a numpy array to bytes using .tobytes()
function.
How do decode it back from this bytes array to numpy array? I tried like this for array i of shape (28,28)
>>k=i.tobytes()
>>np.frombuffer(k)==i
False
also tried with uint8 as well.
A couple of issues with what you're doing:
frombuffer
will always interpret the input as a 1-dimensional array. It's the first line of the documentation. So you'd have to reshape to be (28, 28)
.
The default dtype
is float
. So if you didn't serialize out floats, then you'll have to specify the dtype
manually (a priori no one can tell what a stream of bytes means: you have to say what they represent).
If you want to make sure the arrays are equal, you have to use np.array_equal
. Using ==
will do an elementwise operation, and return a numpy
array of bools (this presumably isn't what you want).
How do decode it back from this bytes array to numpy array?
Example:
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
HTH.
Collected from the Internet
Please contact [email protected] to delete if infringement.
Comments