Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Load compressed data (.npz) from file using numpy.load

Tags:

I have an array:

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

I save it to file using savez_compressed:

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

When I try to load it I don't seem to be able to access the data:

>>> 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 

Am I doing something obviously wrong?

EDIT

Following @Saullo Castro's answer I tried this:

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

and got the following error:

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 

EDIT 2

The above error was in IDLE. It worked using Ipython.

like image 331
atomh33ls Avatar asked Aug 14 '13 11:08

atomh33ls


People also ask

Does NumPy save compress?

savez_compressed. Save several arrays into a single file in compressed .

How do I read a csv file in NumPy?

To read CSV data into a record in a Numpy array you can use the Numpy library genfromtxt() function, In this function's parameter, you need to set the delimiter to a comma. The genfromtxt() function is used quite frequently to load data from text files in Python.


1 Answers

When using numpy.load you can pass the file name, and if the extension is .npz, it will first decompress the file:

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

and do b['array1'] and so forth to retrieve the data from each array...

like image 191
Saullo G. P. Castro Avatar answered Nov 08 '22 22:11

Saullo G. P. Castro