Vous pouvez convertir un tableau numpy en octets en utilisant la fonction .tobytes()
.
Comment le décoder de ce tableau d'octets en tableau numpy? J'ai essayé comme ça pour le tableau i de forme (28,28)
>>k=i.tobytes()
>>np.frombuffer(k)==i
False
également essayé avec uint8 aussi.
Quelques problèmes avec ce que vous faites:
frombuffer
interprétera toujours l'entrée comme un tableau à 1 dimension. C'est la première ligne du documentation . Donc, il vous faudrait refaçonner pour être (28, 28)
.
La valeur par défaut dtype
est float
. Donc, si vous n'avez pas sérialisé les flottants, vous devrez alors spécifier le dtype
manuellement (personne ne peut dire ce qu'un flux d'octets signifie: vous devez dire ce qu'ils représentent).
Si vous voulez vous assurer que les tableaux sont égaux, vous devez utiliser np.array_equal
. En utilisant ==
effectuera une opération élémentaire et renverra un tableau numpy
de bools (ce n'est probablement pas ce que vous voulez).
Comment le décoder de ce tableau d'octets en tableau numpy?
Exemple:
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.