如何从npy.gz文件恢复numpy数组
问题内容:
我用以下代码保存了一些numpy对象:
f = gzip.GzipFile('/some/path/file.npy.gz', "w")
np.save(file=f, arr=np.rint(trimmed).astype('int16'))
f.close()
现在我有一堆npy.gz文件,但是我不知道如何以编程方式将它们返回到python中。np.fromtext
或np.fromstring
似乎不起作用,也不会保留形状信息。
我试过了:
gzipfile = gzip.GzipFile('/some/path/file.npy.gz', 'rb')
text = gzipfile.read()
而且text
是这样的:
b'\x93NUMPY\x01\x00F\x00{\'descr\': \'<i2\', \'fortran_order\': False, \'shape\': (132, 248, 291), } \n0\xf80\xf80...'
但是,接下来该怎么做才能将该字符串返回到numpy对象中呢?
问题答案:
如果它的工作原理save
到一个gzip
文件,它也可能工作从一读。 load
是对应于save
:
In [193]: import gzip
In [194]: f = gzip.GzipFile('file.npy.gz', "w")
In [195]: np.save(f, np.arange(100))
In [196]: f.close()
In [200]: f = gzip.GzipFile('file.npy.gz', "r")
In [201]: np.load(f)
Out[201]:
array([ 0, 1, 2, 3, 4, .... 98, 99])
还有一个savez(compressed)
可以将多个阵列保存到zip
存档中。