假设我的程序创建了大量数据,然后我用numpy的savez例程保存.但是,我还想将一些额外的信息与该数组一起存储.例子是当前版本的git commit id,以及用于生成数据的输入参数,以便稍后我可以查看数据并确切知道我是如何创建数据的.
有没有办法将这些信息与数组一起直接保存在npz文件中,还是我必须创建一个单独的文件?
简而言之,你可以(.npz只是一个腌制的字典),但你可能最好切换到别的东西.(看起来@JoshAdel刚刚发布了一个很好的例子,如果你想坚持下去的话.npz.)
对于类似的东西,HDF是更好的选择.
hdf文件中的每个组或数据集都可以存储属性.
我建议h5py将numpy数组存储在hdf文件中.
举个例子:
import numpy as np
import h5py
somearray = np.random.random(100)
f = h5py.File('test.hdf', 'w')
dataset = f.create_dataset('my_data', data=somearray)
# Store attributes about your dataset using dictionary-like access
dataset.attrs['git id'] = 'yay this is a string'
f.close()
Run Code Online (Sandbox Code Playgroud)
你应该能够:
In [2]: a = np.arange(10)
In [3]: b = 'git push'
In [5]: np.savez('file',a=a,b=b)
In [7]: data = np.load('file.npz')
In [8]: data.keys()
Out[8]: ['a', 'b']
In [9]: data['a']
Out[9]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
In [10]: str(data['b'])
Out[10]: 'git push'
Run Code Online (Sandbox Code Playgroud)
因此,您可以保存任意命名的数据并获取类似字典的对象。也许更好的格式是使用 h5py 或 pytables 的 hdf5,它更灵活并且内置对各种元数据的支持:
| 归档时间: |
|
| 查看次数: |
1455 次 |
| 最近记录: |