Sig*_*mun 3 python numpy zipfile
我有一个包含许多NPY文件的压缩文件(file1.npy,file2.npy,file3.npy,...)。我想单独加载它们而不在文件系统上提取 zipfile。我已经尝试了很多东西,但我无法弄清楚。
我的猜测是:
import zipfile
import numpy as np
a = {}
with zipfile.ZipFile('myfiles.zip') as zipper:
for p in zipper.namelist():
with zipper.read(p) as f:
a[p] = np.load(f)
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
将 2 个数组保存到各自的文件中:
In [452]: np.save('x.npy',x)
In [453]: np.save('y.npy',y)
Run Code Online (Sandbox Code Playgroud)
使用文件浏览器工具,创建一个zip文件,并尝试加载它:
In [454]: np.load('xy.zip')
Out[454]: <numpy.lib.npyio.NpzFile at 0xb48968ec>
Run Code Online (Sandbox Code Playgroud)
貌似np.load检测到zip性质(独立于名称),并返回一个NpzFile对象。让我们将它分配给一个变量,然后尝试正常的.npz提取:
In [455]: xy=np.load('xy.zip')
In [456]: xy['x']
Out[456]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
In [457]: xy['y']
Out[457]:
array([[ 0, 4, 8],
[ 1, 5, 9],
[ 2, 6, 10],
[ 3, 7, 11]])
Run Code Online (Sandbox Code Playgroud)
因此load可以lazy对任何zip文件文件执行加载npy,无论它是如何创建的。