gpt4 book ai didi

python - 在全局命名空间中加载 Numpy npz 文件的内容

转载 作者:行者123 更新时间:2023-12-01 03:20:40 24 4
gpt4 key购买 nike

Numpy 允许在单个 npz 文件中导出多个数组,然后可以使用以下方法加载该文件:

infile = "somefile.npz"
inData = np.load( infile)
print( inData.files) #will list all the arrays importable from the file

我对可以在一次调用中加载所有数据并在导出之前保留命名的函数感兴趣。

我可以通过以下方式“内联”完成:

infile = "somefile.npz"
inData = np.load( infile)
for varName in inData.files:
exec(varName + " = inData[\"" + varName + "\"]")

这似乎有效。但由于我想在多个地方使用它,当移动到函数中时它似乎不起作用:

def importEverything( infile):
#imports everything inside the npz input file and keeps the variable in the global namespace

看来变量的作用域不能超出该函数的局部作用域。

我似乎对Python有一些误解。可以做吗?不建议这样做吗?

最佳答案

以下内容应该通过使用 globals 函数来工作。在 docs它指出范围是定义模块而不是调用。因此该函数需要在调用它的同一模块中定义。

import numpy as np

def import_npz(npz_file):
Data = np.load(npz_file)
for varName in Data:
globals()[varName] = Data[varName]

import_npz('test.npz')

如果您想将函数放入模块中,请尝试以下操作:

from import_test import import_npz
import_npz('test.npz', globals())

导入_test.py

import numpy as np
def import_npz(npz_file, namespace):
Data = np.load(npz_file)
for varName in Data:
namespace[varName] = Data[varName]

关于python - 在全局命名空间中加载 Numpy npz 文件的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41961075/

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