在“ with open()as f”期间读取压缩的NumPy文件

时间:2018-06-22 12:45:31

标签: python numpy

我想基于Python https://keras.io/models/sequential/的“ fit_generator”函数创建一个数据生成器。该函数的代码为:

def generate_arrays_from_file():
    while True:
        with open('data.npz') as f:
            for line in f:
                # TODO
                yield ({'input': x}, {'output': y})

TODO行中,我需要从fxy分配一些数据。

现在,文件“ data.npz”实际上是一个压缩的NumPy文件。这是由以下人员创建的:

x = random_numpy_array()  # Create a NumPy array (details not important)
y = random_numpy_array()
np.savez('data.npz', x=x, y=y)

通常,您将使用以下内容来阅读xy

data = np.load('data.npz')
x = data['x']
y = data['y']

但是,在我的示例(上面的代码的第一块)中,我尚未使用np.load()加载数据。相反,我使用with open('data.npz') as f加载了它。

要尝试从x中读取yf,我已经尝试过:

x = f['x']
y = f['y']

但这给了我错误:

TypeError: '_io.TextIOWrapper' object is not subscriptable

那我该如何阅读f并提取xy

1 个答案:

答案 0 :(得分:1)

我很确定您需要对numpy文件使用加载功能。它将加载到一个数组中,如果需要的话,您可以将其存储在字典中。

请参阅Loading arrays from npz files in pythhon