我刚刚开始使用numpy并且想知道一些事情。 分裂后我有一个看起来像这样的numpy数组:
[array([1,2,3]),
array([4,5,6])]
我想使用numpy.savez将主数组保存到.npz存档中,每个子数组都放在自己的.npy文件中。
我想用这个:
numpy.savez('dataFile', mainArray)
可以工作,但它只使用名为arr_0.npy的单个.npy文件创建存档。
有没有办法做这样的事情?如果是这样,我可以使用任何数组的子阵列与该方法。为了获得这些数组,我从一个.bin文件中读取,该文件可能包含任意数量的元素,这些元素将分成任意数量的数组。这就是我遇到困难的原因。
有没有办法将文件添加到已创建的.npz文件中?
答案 0 :(得分:5)
经过更多研究后,我找到了主要问题的答案。我发现你可以使用* arg循环遍历数组列表来添加它们。
我将代码更改为
numpy.savez('test', *[mainArray[x] for x in rang(len(mainArray))])
这给了我正在寻找的解决方案。谢谢你的帮助。
答案 1 :(得分:1)
如果要将子数组保存在主数组中,则可能需要手动使用save
,即
mainArray = [np.array([1,2,3]), np.array([4,5,6])]
for i in range(len(mainArray)):
np.save('dataFile_%i'%i, mainArray[i] )
或者您可以使用savez
分别保存子数组并稍后加载它们。
mainArray = [np.array([1,2,3]), np.array([4,5,6])]
np.savez('dataFile', mainArray[0], mainArray[1])
npzfile = np.load('dataFile.npz')
npzfile['arr_0']
npzfile['arr_1']