【发布时间】:2017-03-25 04:24:33
【问题描述】:
我想执行一个简单的操作,将 python 字典存储到 csv 文件中,然后从文件中读取它作为字典。
我的字典将一个字符串映射到一个 numpy 数组列表,例如:
d = {'x': [array([2, 3, 4]), array([5, 6, 7])], 'y': [array([1, 2, 3]), array([4, 5, 6])]
所以我想将此字典存储为 csv,然后在不同的程序中从文件中重新创建字典。
我尝试使用 python 的 csv 模块将字典写入 csv 文件,但无法正确存储多维 numpy 数组列表。当我使用模块读回它时,它读回了 csv 文件中的空白行。
我也尝试使用pandas,但无法弄清楚如何使用read_csv() 方法从字典中读取一个numpy 数组列表。
【问题讨论】:
-
不要使用 csv。使用pickle(如果您的其他程序也是python程序;否则:使用JSON或类似的东西,通过使用二进制类型存储更有效;例如msgpack)! 编辑:如果它只是一个 numpy 数组列表,请阅读 numpys 文档,因为有特殊的存储方法,例如 savez
-
@sascha 是对的。看看wiki.python.org/moin/UsingPickle
-
pickle 能按原样加载整个字典吗?一些 numpy 值是更复杂的浮点数,为了简单起见,我只是使用整数。
-
阅读官方 pickle 文档(它是标准 python 的一部分),您的问题将得到解答。存储类/函数和 co 变得更加复杂。但是所有原生 python 类型或它们的组合(如 str->list(float) 的字典)都将得到 100% 的支持。再说一遍:考虑 numpy 的 savez!
-
不确定是否可以使用 savez 因为我还需要保留字典结构,并且我不想为每个列表存储一个文件,因为列表的数量可能会变大。但我会继续尝试泡菜。
标签: python csv pandas numpy dictionary