Некоторые из ваших чисел выглядят слишком короткими, чтобы быть случайными. Таким образом, вы можете хранить их в меньше , чем 8 байт с плавающей запятой при сжатии. Например:
Магазин:
import lzma
array = [39534.543, 834759435.3445643, 1.003024032, 0.032543, 434.0208]
with open('store', 'wb') as file:
file.write(lzma.compress(repr(array).encode()))
Загрузка:
import lzma, ast
with open('store', 'rb') as file:
array = ast.literal_eval(lzma.decompress(file.read()).decode())
print(array)
Даже со случайными данными я получаю в среднем менее 8 байт:
>>> n = 10**5
>>> a = [random.random() for _ in range(n)]
>>> len(lzma.compress(repr(a).encode())) / n
7.98948
По общему признанию это довольно медленно, по крайней мере с моими случайными данными. Может быть быстрее для неслучайных данных. Или, может быть, попробуйте более низкий уровень сжатия или одно из других сжатий. Модуль pickle
также упоминает сжатие, так что, возможно, стоит попробовать.