Как сохранить массив с плавающей точкой в ​​двоичный файл с меньшим объемом памяти (например, не в научной нотации)? - PullRequest
0 голосов
/ 03 февраля 2019

Предположим, у меня есть большой массив с плавающей точкой:

Как сохранить этот массив с плавающей точкой в ​​двоичном файле с меньшим объемом памяти, используя numpy.save?

np.save(nucleosomenpyOutputFilePath,averageSignalArray)

Ответы [ 3 ]

0 голосов
/ 06 февраля 2019

Если ваша цель - просто сохранить размер получаемых файлов, и вы можете установить дополнительные пакеты Python и использовать сжатые массивы.https://github.com/Blosc/bcolz

0 голосов
/ 09 февраля 2019

Вероятно, один из самых быстрых и наиболее экономичных способов сделать это с помощью Bloscpack:

https://github.com/blosc/bloscpack

Вы можете прочитать об использовании Python API здесь:

https://github.com/blosc/bloscpack#python-api

И, наконец, вот пример:

>>> import numpy as np
>>> import bloscpack as bp
>>> a = np.linspace(0, 1, 3e8)
>>> print a.size, a.dtype
300000000 float64
>>> bp.pack_ndarray_to_file(a, 'a.blp')
>>> b = bp.unpack_ndarray_from_file('a.blp')
>>> (a == b).all()
True
0 голосов
/ 04 февраля 2019

Спасибо, @hpaulj.Вы открыли мне глаза.

Играя с dtype = np.float32 или dtype = np.float16 в следующих выражениях

averageSignalArray=np.divide(accumulatedSignalArray,accumulatedCountArray,dtype=np.float32)
averageSignalArray=np.divide(accumulatedSignalArray,accumulatedCountArray,dtype=np.float16)

Я получил разные nparrays и сохранил их на следующем шаге:

np.save(nucleosomenpyOutputFilePath,averageSignalArray)
...