NumPy-array ist nicht als JSON serialisierbar
Nach dem erstellen ein NumPy-array und speichern es als eine Django-Kontext, variable, erhalte ich die folgende Fehlermeldung beim laden der Webseite:
array([ 0, 239, 479, 717, 952, 1192, 1432, 1667], dtype=int64) is not JSON serializable
Was bedeutet das?
Es bedeutet, dass irgendwo, irgendwas versucht zu dumpen ein numpy-array mit Hilfe der
Hinweis:
eine Anmerkung zu @ashishsingal Kommentar, es sollte your_array.tolist(), nicht to_list().
json
Modul. Aber numpy.ndarray
ist nicht ein Typ, der json
weiß, wie zu handhaben. Sie müssen schreiben Sie Ihre eigenen serializer, oder (einfach) nur pass list(your_array)
zu was auch immer ist das schreiben der json.Hinweis:
list(your_array)
wird nicht immer so funktionieren, wie es gibt numpy ints, nicht native int. Verwenden your_array.to_list()
statt.eine Anmerkung zu @ashishsingal Kommentar, es sollte your_array.tolist(), nicht to_list().
InformationsquelleAutor Karnivaurus | 2014-10-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich regelmäßig "jsonify" np.arrays. Versuchen Sie, die Anwendung ".tolist ()" - Methode auf die arrays zunächst, wie diese:
Um "unjsonify" das array verwenden:
Ich weiß nicht, aber ich erwarte, np.array-Typen haben Metadaten, die nicht in json (z.B. wenn Sie die Daten festlegen, die Art der einzelnen Einträge wie float)
Ich versuchte Ihre Methode, aber es scheint, dass das Programm hier an
tolist()
.Nicht sicher, wie Sie Sie, Ihnen zu helfen, mit der gegebenen info. Bitte versuchen Sie, die macht Sie sicher, dass
a
ist ein numpy-array. Danna.tolist()
ist nur die Methode, verwandelt Sie sich in eine Liste mit der gleichen Struktur.Ich fand der Grund ist, dass
tolist()
braucht eine Menge Zeit, wenn die Daten zu groß ist.InformationsquelleAutor travelingbones
Store als JSON ein numpy.ndarray oder verschachtelte-Liste-Komposition.
Ausgabe:
Wiederherstellen von JSON:
Ausgabe:
Gibt es eine einfache Möglichkeit, um die ndarray wieder aus der Liste ?
sind Sie auf der Suche nach
numpy.asarray()
?Dies sollte die akzeptierte Antwort, viel aufgeräumter Art und Weise, Dinge zu tun.
Das IST die Antwort. Tolle Arbeit
InformationsquelleAutor karlB
Können Sie Pandas:
pd.DataFrame(your_array).to_json('data.json', orient='split')
.Welche Daten? Vielleicht solltest du dir eine Frage stellen?
InformationsquelleAutor John Zwinck
Fand ich die beste Lösung, wenn Sie geschachtelt haben numpy-arrays in einem Wörterbuch:
Dank dieser Kerl.
Natürlich Lesen die
json
zurück, die Sie verwenden können:with open(path, 'r') as f:
data = json.load(f)
gibt ein dictionary mit Ihren Daten.Das ist für das Lesen der
json
Datei und anschließend zu Deserialisieren, die Ausgabe, die Sie verwenden können:data = json.loads(data)
InformationsquelleAutor tsveti_iko
Viele andere numpy-Encoder scheint ein bisschen allzu ausführlich.
prüfen, ob das Objekt, wenn aus dem Modul numpy, wenn so verwenden Sie entweder
ndarray.tolist
für einendarray
oder verwenden Sie.item
für andere numpy bestimmten Typ.Verwenden Sie die
json.dumps
default
kwarg:InformationsquelleAutor moshevi
Dies ist nicht standardmäßig unterstützt, aber Sie können es ganz leicht! Es gibt mehrere Dinge, die Sie Kodieren möchten, wenn Sie möchten, dass die exakt gleichen Daten zurück:
obj.tolist()
@travelingbones erwähnt. Manchmal mag das gut genug sein.Darüber hinaus Ihre numpy-array konnte ein Teil Ihrer Datenstruktur, z.B. eine Liste mit einige Matrizen innen. Für die, die Sie verwenden, eine benutzerdefinierte encoder, die im Grunde genommen hat die oben.
Dieser sollte ausreichend sein, um eine Lösung implementieren. Oder Sie konnte json-tricks, die tut genau das (und unterstützt verschiedene andere Arten) (disclaimer: ich habe es).
Dann
InformationsquelleAutor Mark
Ich hatte ein ähnliches problem mit einer verschachtelten Wörterbuch mit einigen numpy.ndarrays.
InformationsquelleAutor JLT
Könnten Sie auch
default
argument zum Beispiel:InformationsquelleAutor steco
Auch einige sehr interessante Informationen weiter, die auf Listen gegenüber arrays in Python ~> Python-Liste vs. Array - Wann?
Es konnte festgestellt werden, dass, sobald ich meine konvertieren arrays in eine Liste, bevor Sie es speichern in eine JSON-Datei, in meinem deployment-jetzt sowieso, wenn ich lese, dass die JSON-Datei zur späteren Verwendung, ich kann auch weiterhin, um es in eine Liste der form (im Gegensatz zur Umwandlung zurück in ein array).
UND sieht tatsächlich besser aus (meiner Meinung nach) auf dem Bildschirm als Liste (durch Komma getrennt) vs. ein array (nicht-Komma-getrennt) auf diese Weise.
@Travelingbones .tolist () - Methode oben habe ich mit als solche (Fang ein paar Fehler hab ich auch gefunden):
SPEICHERN WÖRTERBUCH
LESEN WÖRTERBUCH
Hoffe, das hilft!
InformationsquelleAutor ntk4
Hier ist eine Umsetzung, die für mich arbeiten und entfernt alle nans (vorausgesetzt, diese sind einfache Objekt - (Liste oder dict)):
InformationsquelleAutor Roei Bahumi
Dies ist eine andere Antwort, aber dies könnte helfen, Menschen zu helfen, die versuchen, Daten zu speichern und dann Lesen Sie es erneut.
Es ist hickle, die ist schneller als die Gurke und leichter.
Ich versuchte, Sie zu speichern und Lesen Sie es in Gurke-dump, aber beim Lesen gab es viele Probleme und verschwendet eine Stunde und immer noch keine Lösung finden, obwohl ich arbeiten war auf meine eigene Daten zu erstellen, einen chat-bot.
vec_x
undvec_y
sind numpy-arrays:Dann nur Lesen und ausführen der Vorgänge:
InformationsquelleAutor KS HARSHA
Können Sie eine einfache for-Schleife mit Prüfung-Typen:
InformationsquelleAutor Robert GRZELKA
TypeError: array([[0.46872085, 0.67374235, 1.0218339 , 0.13210179, 0.5440686 , 0.9140083 , 0.58720225, 0.2199381 ]], dtype=float32) ist nicht JSON serialisierbar
Tritt der oben genannte Fehler geworfen wurde, wenn ich versuchte, Sie zu übergeben, Liste der Daten, die von Modell zu Modell.predict (), als ich erwartete die Antwort im json-format.
Aber zum Glück fand Sie den Hinweis, um den Fehler zu beheben, warf
Die Serialisierung der Objekte gilt nur für die folgende Umsetzung
Die Kartierung sollte in der folgenden Art und Weise
Objekt - dict
array - Liste
string - string
integer - Ganzzahl
Wenn Sie nach oben scrollen, um zu sehen, die Zeile mit der Nummer 10
Vorhersage = loaded_model.vorherzusagen(d), wo diese code-Zeile wurde die Ausgabe generieren
der Typ array Datentyp , wenn Sie versuchen, zu konvertieren array zu json-format ist nicht möglich
Schließlich fand ich die Lösung nur durch die Umwandlung erhaltene Ausgabe der Liste Typ von
folgende Zeilen code
Bhoom! endlich die erwartete Ausgabe,
InformationsquelleAutor Poornima Subramani Naidu