如何将不同大小的numpy数组列表保存到磁盘?

Posted

技术标签:

【中文标题】如何将不同大小的numpy数组列表保存到磁盘?【英文标题】:How to save a list of numpy arrays of different sizes to disk? 【发布时间】:2018-12-30 21:22:17 【问题描述】:

我有不同长度的numpy数组,例如

a = [1,2,3,4]
b = [5,6]
c = [7,7,7]
d = [12,24,43,54,66,77,88]

它们被打包在一个列表(或字典)中

the_list = [a,b,c,d]

每个数组大约有 500 个元素长,列表大约有 1000-10000 个数组长。

我想将此列表保存到磁盘上的单个文件,并按重要性顺序满足以下要求:

    读取时运行时 人类可读的文件格式 写入运行时

像这样使用熊猫:

df = pd.DataFrame(the_list)
df.to_csv(path, header=None, index=False)

只写入每个数组的第一个元素。 我猜有更好的(工作)方法,可以使用 pandas、pickle 或其他方法

【问题讨论】:

这里真的需要numpy 数组吗?你不能直接转换成列表并使用 JSON 吗? 你可以创建一个数组字典,其键是变量名并选择 I @juanpa.arrivillaga 我需要将数组作为 numpy 数组进入写入器和读取器。如果把它们变成其他东西是有意义的,那很好。 @Gulzar 只要代码可读、可维护并且通常遵循The Zen of Python,它不应该是优先事项。此外,您不应指定 preferences 而是确定一组 requirements 并满足它们,无论如何。 你看过np.savez吗? 【参考方案1】:

我可能会选择numpy.savez。这个不是人类可读的格式,所以也许它不适合你,但它真的很容易使用(你使用numpy.load阅读文件)。

如果让人类清晰易读真的很重要,我会选择 json -- 这是一种众所周知且广泛使用的与语言无关的交换格式(可能是因为它在 Web 开发中很受欢迎)。您可以使用json 模块中的内置工具编写自己的编码器/解码器(这真的很简单),或者您可以让json-tricks 之类的东西为您工作。

【讨论】:

【参考方案2】:

这适用于我的电脑:

the_list = [a,b,c,d]
df_list = pd.DataFrame( i:pd.Series(value) for i, value in enumerate(the_list) )
df_list.to_csv('./df_list.csv')

the csv file

【讨论】:

以上是关于如何将不同大小的numpy数组列表保存到磁盘?的主要内容,如果未能解决你的问题,请参考以下文章

使用不同大小的 h5py 数组保存

将不同长度的numpy数组保存到同一个csv文件的最佳方法是啥?

在磁盘上保留 numpy 数组的最佳方法

将 Numpy 数组保存为图像

如何在保持分辨率的同时将2D float numpy数组无损保存到灰度图像中?

如何在python中将列表保存为numpy数组?