NumPy: рассчитать среднее значение в определенной области - PullRequest
1 голос
/ 06 октября 2011

есть способ расчета среднего значения в определенном bbox. Сложность состоит в том, что bbox также может содержать значения с плавающей запятой, поэтому границы значений блока должны быть взвешенными. Центр каждой ячейки имеет целочисленные значения (ребра х.5).

Пример:

[[ 1.,  1.,  1.],
[ 1.,  1.,  1.],
[ 1.,  1.,  1.]]

bbox = minx: -0.5, miny: -0.5, maxx: 1, maxy: 1
values = 1*1 + 0.5*1 + 0.5*1 + 0.25*2
weights = 1 + 0.5 + 0.5 + 0.25
average = values / weights = 1.1111...

Я не мог понять, как это сделать с numpy.average, какие-нибудь идеи / решения для этой проблемы?

Заранее большое спасибо.

1 Ответ

1 голос
/ 06 января 2012

Ваш вопрос мне неясен, но похоже, что вы хотите отформатировать массив весов и передать его в функцию np.average () вместе с массивом данных, который вы хотите усреднить, например:

import numpy as np

values = np.array([[1, 1, 1],
                   [2, 2, 2],
                   [3, 3, 3]])

valueweights = np.array([[1, 1, 1],
                         [0.5, 0.5, 0.5],
                         [0.25, 0.25, 0.25]])

average = np.average(values, weights=valueweights)
...