Laden Ich habe .npy Dateien, die mit Python erstellt wurden, 2.7.9 und Numpy Version 1.11.3 mit dem Befehl np.save('filename')
. Die Dateien wurden auf einer externen Maschine erstellt, die Teil des Linux-Clusters unseres Instituts ist. Ich habe die Dateien auf meinen lokalen Rechner kopiert, um sie über zu importieren. Auf meinem lokalen Rechner laufe ich Python 3.5.2 und Numpy Version 1.13.0 mit Jupyter-Notebook. Das lokale Betriebssystem ist Ubuntu 16.04.2.Fehler, wenn ein Python 2 .npy Datei in Python 3
Wenn ich versuche, die Dateien zu laden lokal erhalte ich die Fehlermeldung:
ValueError: invalid literal for int() with base 16
Nach dem Surfen durch einige Stackoverflow Fragen, die ich versuchte, die Codierung angeben mit:
np.load('filename.npy',encoding='latin1')
Dies gibt den gleichen Fehler . encoding='bytes'
ergibt:
TypeError: can't multiply sequence by non-int of type 'float'
Hier ist ein größerer Ausschnitt aus der Traceback:
/usr/local/lib/python3.5/dist-packages/numpy/lib/npyio.py in load(file, mmap_mode, allow_pickle, fix_imports, encoding)
417 else:
418 return format.read_array(fid, allow_pickle=allow_pickle,
--> 419 pickle_kwargs=pickle_kwargs)
420 else:
421 # Try a pickle
/usr/local/lib/python3.5/dist-packages/numpy/lib/format.py in read_array(fp, allow_pickle, pickle_kwargs)
638 pickle_kwargs = {}
639 try:
--> 640 array = pickle.load(fp, **pickle_kwargs)
641 except UnicodeError as err:
642 if sys.version_info[0] >= 3:
/usr/local/lib/python3.5/dist-packages/sympy/core/numbers.py in __new__(cls, num, prec)
823 else:
824 _mpf_ = mpmath.mpf(
--> 825 S.NegativeOne**num[0]*num[1]*2**num[2])._mpf_
826 elif isinstance(num, Float):
827 _mpf_ = num._mpf_
TypeError: can't multiply sequence by non-int of type 'float'
Ich denke, dass etwas mit der Codierung ging schief auf dem Übergang zwischen dem Python und Numpy Versionen. Irgendwelche Ideen, wie ich die Dateien importieren kann?
Sie können Python 2 Numpy Bytecode in Python 3 nicht laden, oder umgekehrt, es macht einfach keinen Sinn zu versuchen. Haben Sie versucht, die .npy-Dateien in Python 2 zu laden? weil Sie bereits Python 2 installiert haben, wenn Sie ubuntu verwenden – cat
Ist es generell unmöglich? Ich glaube, ich habe Python 2 .npy-Dateien zuvor in Python 3 importiert und alles lief reibungslos. Ich kann nicht mit Sicherheit sagen, warum es vorher nicht zu einem Fehler geführt hat ... Das Laden der Dateien in Python 2 funktioniert. (Ich füge '%% python2' am Anfang der Notebook-Zelle ein, um dies zu tun). Aber die Verwendung von Python 2 führt zu weiteren Fehlern, so dass ich nach einer Lösung für Python 3 für die Verwendung dieser Dateien suchte. –
Wissen Sie, was in dieser Datei enthalten ist? Nur ein numerisches Array? Oder eine Art "Objekt".Der Fehler ist in 'pickle_load' und deutet auf den späteren hin. "np.save" -Dokumente weisen einige Vorsichtsmaßnahmen hinsichtlich der PY2/3-Kompatibilität beim Beizen von Objekten auf. – hpaulj