Обобщенная гистограмма в Python: применение функции bin за binPython

Программы на Python
Anonymous
Обобщенная гистограмма в Python: применение функции bin за bin

Сообщение Anonymous »

Чтобы построить гистограмму, у нас есть массив ячеек и массив данных, находим, в какие ячейки попадают данные, и подсчитываем количество элементов в каждой ячейке. Мне бы хотелось чего-то похожего, но более общего, где мы, например. суммировать, умножать, брать максимальное, минимальное и т. д. всех элементов в каждом интервале.
В дальнейшем интервалы представляют собой одномерный массив, данные — это массив произвольной формы, где каждый элемент представляет собой скаляр или массив (чья форма может различаться в зависимости от элементов данных), а f — любая функция. Предполагается, что функция f возвращает скаляр независимо от формы ввода.
Надеюсь, следующий код выражает то, что я пытаюсь сделать.

Код: Выделить всё

out = np.empty(data.shape + bins.shape, np.nan)
for i in np.ndindex(data.shape):
databins = np.searchsorted(bins, data[i])-1
out[i][:] = f(data[i][arrbins == bins[:]])
Однако у него есть некоторые проблемы:
  • Он не позволяет использовать скалярные значения в массиве данных, поскольку они не могут быть проиндексированы.
  • В зависимости от функции передача пустого массива может быть разрешена или запрещена. Это нормально, если выходной массив имеет значение nan на случай, если передача пустого массива не разрешена. Поэтому я установил это значение как значение по умолчанию.
  • Последняя строка в приведенном выше коде, вероятно, не будет работать из-за проблем с трансляцией. Вместо этого я попробовал следующее, но выдал следующую ошибку: «TypeError: только целочисленные скалярные массивы могут быть преобразованы в скалярный индекс».

Код: Выделить всё

out = np.empty(data.shape + bins.shape, np.nan)
for i in np.ndindex(data.shape):
databins = np.searchsorted(bins, data[i])-1
for j in np.ndindex(bins.shape)
out[i][j] = f(data[i][arrbins == bins[j]])
Есть предложения?

Подробнее здесь: https://stackoverflow.com/questions/798 ... bin-by-bin

Вернуться в «Python»