Скажем, у нас есть словарь
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
Еще третий способ - использовать deepdish:
dd.io.save("test.h5", d)
Проблема с этим методом заключалась в том, что он хотел, чтобы мои ключи были строками и пропускали ключевые данные, не вызывая ошибки:
$h5ls test.h5
s3 Dataset {1}
s4 Dataset {3}
Обратите внимание, что "s0", "s1" и "s2" не были сохранены в файле, и об ошибке не сообщалось. Итак, что является самым безопасным способом хранения словаря python в hdf файле?
Я не хочу использовать дамп для соленья, потому что его трудно будет прочитать в Fortran. Этот вопрос не является дубликатом этого вопроса, потому что он показал, как эти методы не хранили необходимые данные.
Таким образом, это не самый передовой ответ, который произведет впечатление на любых uber-geeks, но если вам нужна переносимость, я бы предложил файл INI. Существует не язык или платформа, которые не могут читать или писать.
Вот библиотека FORTRAN для обработки их.