我有一个npz
文件,如下所示。
data = np.load('Data_5_iteration.npz') # Load data from file
keys = list(data.keys()) # all keys in the dictionary
print(keys)
(base) hell@hell:~$ ['nodes', 'temperature', 'max_iter', 'best_error_vec', 'best_u_pred', 'final_error_vec', 'final_u_pred', 'best_iter', 'PDE_loss_array', 'BC_loss_array', 'total_loss_array']
我想将所有这些numpy数组存储在与列表中相同名称的不同数组中,而不需要逐行写入。
例如,我不想写:
nodes = data[keys[0]]
temperature = data[keys[1]]
max_iter = data[keys[2]]
best_error_vec = data[keys[3]]
best_u_pred = data[keys[4]]
final_error_vec = data[keys[5]]
final_u_pred = data[keys[6]]
best_iter = data[keys[7]]
PDE_loss_array = data[keys[8]]
BC_loss_array = data[keys[9]]
total_loss_array = data[keys[10]]
我能用一些自动化的方法吗?
使用示例npz
,我可以获得一个列表或dict:
In [42]: with np.load('data.npz') as f:
...: alist = [(key,f[key]) for key in f]
...:
In [43]: alist
Out[43]: [('fone', array(['t1', 't2', 't3'], dtype='<U2')), ('nval', array([1, 2, 3]))]
In [44]: with np.load('data.npz') as f:
...: adict = {key:f[key] for key in f}
...:
In [45]: adict
Out[45]: {'fone': array(['t1', 't2', 't3'], dtype='<U2'), 'nval': array([1, 2, 3])}
列表可以是unpacked
,带有:
In [46]: fone, nval = alist
In [47]: fone
Out[47]: ('fone', array(['t1', 't2', 't3'], dtype='<U2'))
我们也可以使用dict
方法在全局或本地命名空间中设置变量,但Python不鼓励这样做。