Как измерить среднее значение в области массива - PullRequest
0 голосов
/ 10 ноября 2019

Довольно плохо знаком с использованием numpy, и у меня есть фрагмент кода, в котором у меня есть 2D-массив (изображение), в котором я хочу вычислить среднее значение и стандартное отклонение квадратной области с помощью массива. Итак, +/- определенная дельта в строках и столбцах вокруг определенной точки

Прямо сейчас мой код выглядит следующим образом (для произвольной области размером 20 пикселей (100, 100)):

r = 100
c = 100
r0 = r - 10
r1 = r + 10
c0 = c - 10
c1 = c + 10
mean = image[r0:r1, c0:c1].mean()
std = image[r0:r1, c0:c1].std()

Вопрос

Существует ли более лаконичный или более тупой способ вычисления среза для подачи в mean () и std (), который не занимает такмного строк? (Я знаю, что мог бы сделать это с помощью numpy.where (), но тогда условия заняли бы почти столько же строк)

спасибо!

Ответы [ 2 ]

1 голос
/ 10 ноября 2019

Не то, чтобы я знал, и я был бы немного удивлен, если бы были. То, что у вас есть, очень просто, поэтому специальная функция для него не сильно поможет. Моим предложением для удобства чтения было бы сделать встроенный +/- для создания массива region, а затем вызвать методы mean и std для этой переменной.

Кроме того, на случай, если вам интересноразрезание, которое вы там сделали, довольно эффективно, numpy не должен создавать новый массив, а просто создавать новое представление существующей памяти. Использование чего-то вроде where создаст новый массив.

0 голосов
/ 10 ноября 2019

Вы можете использовать эти 2 урока: NumPy-Mean , NUMPY-STD

...