Как сохранить список массивов разных размеров на диск? - PullRequest
0 голосов
/ 31 декабря 2018

У меня есть несколько массивов разной длины, например

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 массивов.

Я хочу сохранить этот список в один файл на диске со следующими требованиями в порядке важности:

  1. Время выполнения при чтении
  2. Формат файла, читаемый человеком
  3. Время выполнения при записи

Использование панд, например, так:

df = pd.DataFrame(the_list)
df.to_csv(path, header=None, index=False)

Толькозаписывает первый элемент каждого массива.Я предполагаю, что есть лучший (рабочий) способ, с пандами, маринованными огурцами или чем-то еще

Ответы [ 2 ]

0 голосов
/ 31 декабря 2018

Это работает на моем компьютере:

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')

CSV-файл

0 голосов
/ 31 декабря 2018

Я бы, наверное, пошел с numpy.savez.Этот не читаемый человеком формат, поэтому, возможно, он не будет работать для вас, но его действительно легко использовать (вы читаете файл, используя numpy.load).

Если у вас естьон разборчив для людей, действительно важен, я бы остановился на json - это язык обмена независимыми языками, который хорошо известен и широко используется (вероятно, из-за его популярности в веб-разработке).Вы можете написать свой собственный кодер / декодер, используя встроенные средства в модуле json (это действительно довольно просто), или вы можете позволить что-то вроде json-tricks сделать это для вас.

...