python中npz文件的读取_使用numpy.load从文件加载压缩数据(.npz)

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 "", line 1, in

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 "", line 1, in

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.

解决方案

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值