如何将多个 2D np.arrays 保存到磁盘,每个 2D np.arrays 的第二维大小可变?

How to save to disk several 2D np.arrays each having the second dimension variable in size?

我得到一些结果,其大小为 np.arrays (no_of_rows, 2),其中 no_of_rows 因数组而异。

我想将这些结果保存到磁盘以备后用(绘图)。无论如何,如何并不重要,但如果可能的话,就 REOPENING/USING 耗时而言,以最有效的方式。

我可以用这些二维数组做任何事情。我的想法是创建一个 .npy 文件,其中包含形状为 (no_of_matrices, ?, 2) 的 3D 张量,但是 ?是我的问题。每个二维数组可能有不同的 no_of_rows。所以我放弃了这个想法。

我现在列出了这些 2D np.arrays。我现在想将该列表保存到磁盘。 我读过 np.savez,但这并没有保留保存的顺序。也就是说,当加载回内存时,我不知道哪个数组是哪个,除了许多 if 语句检查每个数组的 no_of_lines 并将其与稍后绘制时的含义相匹配。

我是否有机会将这些数组存储在 1 个单个文件中,或者我是否必须求助于创建多个文件,以独特的方式命名,每个 2D 数组一个,然后分别访问这些文件密谋?

[PS:我最多只能有 100 个这样的二维数组,通常少于 10 个。]

谢谢

您可以使用带键参数的 npz 来识别每个数组,从而不再有不保留顺序的问题。

a = np.arange(10)
b = np.arange(5)*-1

f1={'my_key1':a}
f2={'my_key2':b}

np.savez_compressed('my_archive.npz', **f1, **f2)

阅读您的档案如下:

>>>print(np.load('my_archive.npz')['my_key2'])
[ 0 -1 -2 -3 -4]

编辑

如评论中所述,如果我们想自动注册N np.arrays,上述解决方案是不可行的。 因此,解决方案是创建一个包含 N 个条目的字典:

f = {}
f['my_key1'] = a
f['my_key2'] = b

np.savez_compressed('my_archive.npz', **f)

您可以将这些二维数组保存为 CSV 文件。

将所有数组连接成一个由您决定:您可以将所有数组连接成一个数组并只保存一个文件,或者您可以保存收到的所有数组。