假设我们有一本字典
import numpy as np
d={}
d["s0"]=3
d["s1"]=np.int16(3)
d["s2"]=np.array("hello")
d["s3"]=np.array([2])
d["s4"]=np.linspace(0,2, 3)
保存此词典的一种方法是使用json。这意味着序列化数据并将其存储为列表。在这种情况下,可能会失去精度。
另一种方法是将其转换为pandas DataFrame并将其保存到hdf:
import pandas as pd
df=pd.DataFrame(d)
#dd.io.save("test.h5", d)
store = pd.HDFStore('store.h5')
store["data"]=df
但这失败了。我得到:
ValueError: arrays must all be same length
第三种方法是使用深色:
dd.io.save("test.h5", d)
此方法的问题是它希望我的键为字符串,并且丢失键数据而不会引发错误:
$h5ls test.h5
s3 Dataset {1}
s4 Dataset {3}
请注意,“ s0”,“ s1”和“ s2”未保存到文件,并且未报告任何错误。那么将python字典存储到hdf文件中最安全的方法是什么?
我不想使用pickle dump,因为在Fortran中很难读取。这个问题不是this question的重复,因为它显示了这些方法如何无法存储所需的数据。
答案 0 :(得分:1)
因此,这不是给任何超级怪胎留下深刻印象的前沿答案,但是如果您需要可移植性,建议您使用INI文件。没有一种语言或平台无法读取或编写它。
这里是一个用于处理它们的FORTRAN库。