Python 如何将多个2D np.Array(每个数组的大小都是第二维变量)保存到磁盘?

Python 如何将多个2D np.Array(每个数组的大小都是第二维变量)保存到磁盘?,python,arrays,numpy,file-io,data-science,Python,Arrays,Numpy,File Io,Data Science,我得到了一些大小为np.array的结果(no_of_rows,2),其中no_of_rows因数组而异 我想将这些结果保存到磁盘以供以后使用(打印)。无论如何,这并不重要,但如果可能的话,以最有效的方式重新打开/使用所消耗的时间 我可以用这些2D阵列做任何事情。我的想法是创建一个.npy文件,其中包含一个形状的三维张量(没有矩阵,2),但那是什么?这是我的问题。每个2D数组可能具有不同的无行数。所以我放弃了这个想法 我现在列出了这些2D np.Array。现在我想将该列表保存到磁盘。 我读过关

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

我想将这些结果保存到磁盘以供以后使用(打印)。无论如何,这并不重要,但如果可能的话,以最有效的方式重新打开/使用所消耗的时间

我可以用这些2D阵列做任何事情。我的想法是创建一个
.npy
文件,其中包含一个形状的三维张量(没有矩阵,2),但那是什么?这是我的问题。每个2D数组可能具有不同的
无行数
。所以我放弃了这个想法

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

我是否有机会将这些阵列存储在一个文件中,还是只需创建多个文件(以独特的方式命名),每个二维阵列一个文件,然后在打印时分别访问这些文件

[PS:我最多只能拥有100个这样的2D阵列,通常少于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.Array,则上述解决方案是不可行的。 因此,解决方案是创建一个包含N个条目的字典:


可以将这些二维阵列保存为CSV文件


将所有数组连接成一个数组取决于您:您可以将所有数组连接成一个数组并只保存一个文件,也可以保存收到的所有数组。

谢谢。您是否有任何关于编程定义f的想法?我现在正在基于索引
I
的for循环中尝试
'f\ud%I={names[I]:final\u coords\u at\u detectorscreen\u container[I]}
,但它不起作用:
语法错误:无法分配给运算符
。然后我想做:
np.savez_compressed('my_archive.npz',**基于_ofthe_fs)
显然,如果我的列表中有5个以上的数组,那么你的答案是不可行的。好吧,我现在有一个像你模拟的那样的字典列表,
l=[{},{},…
。我现在尝试使用
np.savez_compressed
np.savez_compressed('filename.npz'),**l[I]表示范围内的I(len(l))
,但它不起作用。好吧,通过将所有内容放在一个包含许多键值对的大字典中来实现保存,因为我发现一个字典只有1key-1value(就像你对
f1
f2
所做的那样)有点多余。我刚刚将
np.savez_compressed()
命令中的大字典解压缩为
np.savez_compressed('filename.npz',**big_dict)
,然后访问
np.load('filename.npz')[key]
其中
key
来自保存在big dict中的所有键的列表。使用单个字典是正确的解决方案。运算符**允许您添加每个元素及其相关键
f = {}
f['my_key1'] = a
f['my_key2'] = b

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