Laden Sie komprimierte Daten (.npz) aus der Datei mit numpy.load

Ich habe ein Array:

>>> data = np.ones((1,3,128)) 

Ich speichere es in Datei mit savez_compressed :

 >>> with open('afile','w') as f: np.savez_compressed(f,data=data) 

Wenn ich versuche, es zu laden, scheine ich nicht in der Lage zu sein, auf die Daten zuzugreifen:

 >>> with open('afile','r') as f: b=np.load(f) >>> b.files ['data'] >>> b['data'] Traceback (most recent call last): File "<pyshell#196>", line 1, in <module> b['data'] File "C:\Python27\lib\site-packages\numpy\lib\npyio.py", line 238, in __getitem__ bytes = self.zip.read(key) File "C:\Python27\lib\zipfile.py", line 828, in read return self.open(name, "r", pwd).read() File "C:\Python27\lib\zipfile.py", line 853, in open zef_file.seek(zinfo.header_offset, 0) ValueError: I/O operation on closed file 

Bin ich etwas ganz offensichtlich falsch

BEARBEITEN

Nach der Antwort von @Saullo Castro habe ich das versucht:

 >>> np.savez_compressed('afile.npz',data=data) >>> b=np.load('afile.npz') >>> b.files ['data'] >>> b['data'] 

Und bekam folgende Fehlermeldung:

 Traceback (most recent call last): File "<pyshell#253>", line 1, in <module> b['data'] File "C:\Python27\lib\site-packages\numpy\lib\npyio.py", line 241, in __getitem__ return format.read_array(value) File "C:\Python27\lib\site-packages\numpy\lib\format.py", line 440, in read_array shape, fortran_order, dtype = read_array_header_1_0(fp) File "C:\Python27\lib\site-packages\numpy\lib\format.py", line 336, in read_array_header_1_0 d = safe_eval(header) File "C:\Python27\lib\site-packages\numpy\lib\utils.py", line 1156, in safe_eval ast = compiler.parse(source, mode="eval") File "C:\Python27\lib\compiler\transformer.py", line 53, in parse return Transformer().parseexpr(buf) File "C:\Python27\lib\compiler\transformer.py", line 132, in parseexpr return self.transform(parser.expr(text)) File "C:\Python27\lib\compiler\transformer.py", line 124, in transform return self.compile_node(tree) File "C:\Python27\lib\compiler\transformer.py", line 159, in compile_node return self.eval_input(node[1:]) File "C:\Python27\lib\compiler\transformer.py", line 194, in eval_input return Expression(self.com_node(nodelist[0])) File "C:\Python27\lib\compiler\transformer.py", line 805, in com_node return self._dispatch[node[0]](node[1:]) File "C:\Python27\lib\compiler\transformer.py", line 578, in testlist return self.com_binary(Tuple, nodelist) File "C:\Python27\lib\compiler\transformer.py", line 1082, in com_binary return self.lookup_node(n)(n[1:]) File "C:\Python27\lib\compiler\transformer.py", line 596, in test then = self.com_node(nodelist[0]) File "C:\Python27\lib\compiler\transformer.py", line 805, in com_node return self._dispatch[node[0]](node[1:]) File "C:\Python27\lib\compiler\transformer.py", line 610, in or_test return self.com_binary(Or, nodelist) File "C:\Python27\lib\compiler\transformer.py", line 1082, in com_binary return self.lookup_node(n)(n[1:]) File "C:\Python27\lib\compiler\transformer.py", line 615, in and_test return self.com_binary(And, nodelist) File "C:\Python27\lib\compiler\transformer.py", line 1082, in com_binary return self.lookup_node(n)(n[1:]) File "C:\Python27\lib\compiler\transformer.py", line 619, in not_test result = self.com_node(nodelist[-1]) File "C:\Python27\lib\compiler\transformer.py", line 805, in com_node return self._dispatch[node[0]](node[1:]) File "C:\Python27\lib\compiler\transformer.py", line 626, in comparison node = self.com_node(nodelist[0]) File "C:\Python27\lib\compiler\transformer.py", line 805, in com_node return self._dispatch[node[0]](node[1:]) File "C:\Python27\lib\compiler\transformer.py", line 659, in expr return self.com_binary(Bitor, nodelist) File "C:\Python27\lib\compiler\transformer.py", line 1082, in com_binary return self.lookup_node(n)(n[1:]) File "C:\Python27\lib\compiler\transformer.py", line 663, in xor_expr return self.com_binary(Bitxor, nodelist) File "C:\Python27\lib\compiler\transformer.py", line 1082, in com_binary return self.lookup_node(n)(n[1:]) File "C:\Python27\lib\compiler\transformer.py", line 667, in and_expr return self.com_binary(Bitand, nodelist) File "C:\Python27\lib\compiler\transformer.py", line 1082, in com_binary return self.lookup_node(n)(n[1:]) File "C:\Python27\lib\compiler\transformer.py", line 671, in shift_expr node = self.com_node(nodelist[0]) File "C:\Python27\lib\compiler\transformer.py", line 805, in com_node return self._dispatch[node[0]](node[1:]) File "C:\Python27\lib\compiler\transformer.py", line 683, in arith_expr node = self.com_node(nodelist[0]) File "C:\Python27\lib\compiler\transformer.py", line 805, in com_node return self._dispatch[node[0]](node[1:]) File "C:\Python27\lib\compiler\transformer.py", line 695, in term node = self.com_node(nodelist[0]) File "C:\Python27\lib\compiler\transformer.py", line 805, in com_node return self._dispatch[node[0]](node[1:]) File "C:\Python27\lib\compiler\transformer.py", line 715, in factor node = self.lookup_node(nodelist[-1])(nodelist[-1][1:]) File "C:\Python27\lib\compiler\transformer.py", line 727, in power node = self.com_node(nodelist[0]) File "C:\Python27\lib\compiler\transformer.py", line 805, in com_node return self._dispatch[node[0]](node[1:]) File "C:\Python27\lib\compiler\transformer.py", line 739, in atom return self._atom_dispatch[nodelist[0][0]](nodelist) File "C:\Python27\lib\compiler\transformer.py", line 754, in atom_lbrace return self.com_dictorsetmaker(nodelist[1]) File "C:\Python27\lib\compiler\transformer.py", line 1214, in com_dictorsetmaker assert nodelist[0] == symbol.dictorsetmaker AssertionError 

BEARBEITEN 2

Der obige Fehler war in IDLE. Es funktionierte mit Ipython.

4 Solutions collect form web for “Laden Sie komprimierte Daten (.npz) aus der Datei mit numpy.load”

Bei der Verwendung von numpy.load Sie den Dateinamen übergeben , und wenn die Erweiterung .npz , wird es zuerst entschlüsseln:

 np.savez_compressed('filename.npz', array1=array1, array2=array2) b = np.load('filename.npz') 

Und do b['array1'] und so weiter, um die Daten aus jedem Array abzurufen …

Versuchen Sie, die Datei als Binär zu öffnen:

 with open('afile','rb') as f: 

Ich habe das gleiche Problem (AssertionError) bei der Verwendung von numpy 1.7.1 / 1.8.0 mit python 2.7.6 sowohl auf MAC OS und Windows. Aber das Problem wurde automatisch behoben, nachdem ich mit python 2.7.5 auf linux umgestellt habe. Dann installiere ich python 2.7.5 auf MACOS und Windows und das ganze Problem war weg. Grundsätzlich ist das Problem mit Python statt numpy wie der Compiler sendet alert.So müsste die Version zählt.

Aber obwohl npy ist die serialisierbare Art von numpy, ich glaube nicht, dass die Datei ist klein genug, auch mit savez_compressed für große Matrix.

Hoffentlich ist dein Problem das gleiche mit mir

Sie können auch das f Attribut verwenden, das Sie mit einem np.ndarray :

 images = np.load('images.npz') images = images.f.arr_0 

Der Name / Schlüssel des Arrays innerhalb der .npz-Datei (zB arr_0 ) kann durch gefunden werden

 images.keys() 

Hinweis : Das f Attribut ist nicht im docstring der Last dokumentiert. Wenn load eine npz Datei liest, gibt es eine Instanz der class NpzFile . Diese Klasse ist als numpy.lib.npyio.NpzFile verfügbar. Der docstring der NpzFile Klasse beschreibt das f Attribut. (Ab diesem Schreiben ist hier der Quellcode der Klasse zu finden.

  • Wie konvertiert man eine 1D-Python-Liste mit Bilddaten in ein numpy Array und zeigt es
  • Die meisten effizienten Weg, um riesige 2D NumPy Array, gruppiert von ID Spalte Summe?
  • Wie kann ich eine Gleitkommazahl knapp unterhalb einer Grenze klammern?
  • Generiere N positive ganze Zahlen innerhalb eines Bereichs, der bis zu einer Gesamtmenge in Python addiert
  • Numpy erweiterte Auswahl funktioniert nicht
  • ValueError: Ein Array-Element mit einer Sequenz mit numpy einstellen
  • Warum ist Sünde (180) nicht null bei der Verwendung von Python und numpy?
  • Python-Pandas: Einträge entfernen, die auf der Anzahl der Vorkommen basieren
  • Wie man eine innere oder äußere Verknüpfung von DataFrames mit Pandas auf nicht-vereinfachtem Kriterium durchführt
  • Numpy Matrix Multiplikation von 2d Matrix, um 3D Matrix zu geben
  • Numpy array, das ist (n, 1) und (n,)
  • Python ist die beste Programmiersprache der Welt.