Lädt Python 2 .npy Datei in Python 3

8

Ich versuche /usr/share/matplotlib/sample_data/goog.npy zu laden:

%Vor%

Es ist in Python 2.7 in Ordnung, löst aber in Python 3.4 eine Ausnahme aus:

%Vor%

Ich nehme an, es hat etwas mit bytes/str/unicode Inkonsistenz zwischen Python 2 und 3 zu tun, aber ich habe keine Ahnung, wie ich durchkommen soll.

Frage:

  • Wie lade ich eine .npy -Datei (NumPy-Daten) von Python 2 in Python 3?
Frozen Flame 08.06.2014, 10:21
quelle

3 Antworten

3

Das Problem besteht darin, dass die Datei serialisierte (gebeizte) Python-Datetime-Objekte und nicht nur numerische Daten enthält. Das Python-Serialisierungsformat für diese Objekte ist in Py2 bis Py3 nicht kompatibel:

%Vor%

und

%Vor%

Eine Problemumgehung besteht darin, innerhalb von Numpy-Code zu ändern

%Vor%

zu array = pickle.load(fp, encoding="bytes") . Eine bessere Lösung wäre es, numpy.load den Kodierungsparameter übergeben zu können.

    
pv. 09.06.2014 09:22
quelle
2

In Python 3.5 mit numpy 1.10.4 funktioniert der folgende Befehl für mich:

%Vor%

Es schlägt mit derselben Fehlermeldung fehl, wenn ich die Codierung nicht festlege.

    
PhABC 28.03.2017 21:54
quelle
0

Ein Workaround, der mir geholfen hat, besteht darin, das in python2. * geladene numpy-Array in eine csv-Datei zu schreiben und es dann in python3 zu lesen. *

%Vor%

Lies jetzt die Datei zurück in python3

%Vor%     
user1683894 01.02.2018 20:04
quelle