.tobytes()
関数を使用して、numpy配列をバイトに変換できます。
このバイト配列からnumpy配列にデコードするにはどうすればよいですか?形状(28,28)の配列iに対してこのように試しました
>>k=i.tobytes()
>>np.frombuffer(k)==i
False
uint8でも試してみました。
あなたがやっていることに関するいくつかの問題:
frombuffer
は、入力を常に1次元配列として解釈します。 documentation の最初の行です。したがって、(28, 28)
になるように形状を変更する必要があります。
デフォルトのdtype
はfloat
です。したがって、フロートをシリアライズしなかった場合は、dtype
を手動で指定する必要があります(先験的には、バイトストリームの意味を誰も知ることができません:それらが表すものを言う必要があります)。
配列が等しいことを確認したい場合は、np.array_equal
を使用する必要があります。 ==
を使用すると、要素ごとの操作が行われ、boolsの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
HTH。