Как сохранить произвольный словарь в файле, чтобы его можно было прочитать и на Фортране?

1

Скажем, у нас есть словарь

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. Этот вопрос не является дубликатом этого вопроса, потому что он показал, как эти методы не хранили необходимые данные.

Теги:
pandas
numpy
dictionary

1 ответ

1

Таким образом, это не самый передовой ответ, который произведет впечатление на любых uber-geeks, но если вам нужна переносимость, я бы предложил файл INI. Существует не язык или платформа, которые не могут читать или писать.

Вот библиотека FORTRAN для обработки их.

https://github.com/szaghi/FiNeR

Ещё вопросы

Сообщество Overcoder
Наверх
Меню