如何将不同大小的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数组列表保存到磁盘?的主要内容,如果未能解决你的问题,请参考以下文章
将不同长度的numpy数组保存到同一个csv文件的最佳方法是啥?