如何使用numpy.savez将带子数组的数组保存到单独的.npy文件中

2024-06-28 20:05:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我最近刚开始使用numpy,想知道一些事情。 我有一个numpy数组,在拆分后它看起来是这样的:

[array([1,2,3]),
array([4,5,6])]

我想使用numpy.savez将主数组保存到.npz存档中,每个子数组都保存在自己的.npy文件中。

我想用这个:

numpy.savez('dataFile', mainArray)

可以工作,但它只创建一个名为arr_0.npy的.npy文件的存档。

有办法这样做吗?如果是这样的话,有一种方法,我可以用这种方法使用任意数量的子数组。为了得到这些数组,我从一个.bin文件中读取,该文件可以包含任意数量的元素,这些元素可以拆分成任意数量的数组。这就是为什么我有困难的时候。

是否有方法将文件添加到已创建的.npz文件中?


Tags: 文件方法numpy元素数量数组事情array
2条回答

如果要在主数组中保存子数组,则可能需要手动使用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']

做了更多的研究之后,我找到了我主要问题的答案。我发现您可以使用*arg循环遍历数组列表来添加它们。

我把密码改成

numpy.savez('test', *[mainArray[x] for x in rang(len(mainArray))])

这给了我想要的解决方案。谢谢你的帮助。

相关问题 更多 >