У меня проблемы с использованием гистограммы Numpy для определенного набора данных.
Проблема в том, что я получаю очень медленный ответ (несколько минут), а также очень большое использование памяти. Поведение памяти, которое я заметил, - это пик 12 ГБ, который затем уменьшается до ~ 750 МБ, а затем возвращается к большим ГБ. Это, кажется, повторяется бесконечно. Даже если я позволю этому пройти. Это занимает несколько минут, и в конце я получаю ошибку памяти.
Все это происходит, когда передается (очень) небольшой набор данных, такой как приведенный ниже (26 элементов):
array(['2.400000024000011e-05', '2.4000000240000108e-05',
'2.400000024000011e-05', '2.400000024000012e-05',
'2.4000000240000105e-05', '2.4000000240000105e-05',
'2.400000024000009e-05', '2.400000024000012e-05',
'2.400000024000012e-05', '2.400002024000031e-05',
'2.4000000240000145e-05', '2.400000024000012e-05',
'2.400000024000012e-05', '2.4000000240000064e-05',
'2.400000024000012e-05', '2.400000024000012e-05',
'2.400000024000012e-05', '2.400000024000012e-05',
'2.400000024000012e-05', '2.400000024000012e-05',
'2.400000024000001e-05', '2.400000024000012e-05',
'2.4000020240000364e-05', '2.400000024000012e-05',
'2.400000024000012e-05', '2.400000024000012e-05'], dtype='float64')
Я предполагаю, что часть замедления может быть связана с достижением предела физической памяти, а затем ограничена временем подкачки.
Гистограмма рассчитывается следующим образом:
histY, histX = np.histogram(vals, bins='auto')
Где '' 'vals' '' - пример значений в массиве Numpy, предоставленном выше
* Обратите внимание на небольшой минимум-максимум в приведенном выше случае 2.0000000353764813e-11
Мои быстрые догадки; функция гистограммы застряла, выполняя некоторую итеративную оптимизацию, чтобы найти наилучшие размеры бинов в сравнении с количеством бинов для этого набора данных, и у нее возникают проблемы с небольшим минимальным запасом.
Ошибка, которую я получаю, когда она наконец заканчивается:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File ".....\lib\site-packages\numpy\lib\histograms.py", line 737, in histogram
n = np.zeros(n_equal_bins, ntype)
MemoryError
Может кто-нибудь объяснить, что на самом деле здесь происходит и что можно сделать, чтобы обойти проблему?