gpt4 book ai didi

python - 在 zipfile 中的文件上使用 numpy.load

转载 作者:行者123 更新时间:2023-11-30 22:56:26 25 4
gpt4 key购买 nike

我有一个 zip 文件,其中包含许多 npy 文件(file1.npyfile2.npyfile3.npy,...) 。我想单独加载它们,而不在文件系统上提取 zip 文件。我尝试了很多东西,但我无法弄清楚。

我的猜测是:

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)

有什么想法吗?

最佳答案

保存 2 个数组,每个数组都有自己的文件:

In [452]: np.save('x.npy',x)
In [453]: np.save('y.npy',y)

使用文件浏览器工具,创建一个 zip 文件,并尝试加载它:

In [454]: np.load('xy.zip')
Out[454]: <numpy.lib.npyio.NpzFile at 0xb48968ec>

看起来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]])

因此,load 可以对 npy 文件的任何 zip 文件执行延迟加载,无论其方式如何创建。

关于python - 在 zipfile 中的文件上使用 numpy.load,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36983259/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com