可以使用.tobytes()
函数将numpy数组转换为字节.
如何将其从字节数组解码回numpy数组?
>>k=i.tobytes()
>>np.frombuffer(k)==i
False
也try 过uint8.
可以使用.tobytes()
函数将numpy数组转换为字节.
如何将其从字节数组解码回numpy数组?
>>k=i.tobytes()
>>np.frombuffer(k)==i
False
也try 过uint8.
你正在做的事情有几个问题:
frombuffer
将始终将输入解释为一维array.这是documentation人中的第一行.你得重新塑造自己.
默认的dtype
是float
.因此,如果没有序列化out float,那么就必须手动指定dtype
(事先没有人知道字节流是什么意思:你必须说出它们代表什么).
如果要确保数组相等,必须使用np.array_equal
.使用==
将执行元素操作,并返回numpy
个布尔数组(这可能不是您想要的).
如何将其从字节数组解码回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
嗯.