Обобщенная гистограмма в 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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