Python 如何将多个2D np.Array(每个数组的大小都是第二维变量)保存到磁盘?
我得到了一些大小为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。现在我想将该列表保存到磁盘。 我读过关
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)