Усреднение массивов по сетке в PythonPython

Программы на Python
Ответить
Anonymous
 Усреднение массивов по сетке в Python

Сообщение Anonymous »


Я хотел бы усреднить d-мерный массив M размера NxNx...xN (d раз) по регулярной сетке с шагом k< /code>, т.е. построение нового массива N размером NxNx...xN (d раз), где в каждом гиперкубе H регулярной сетки шага k значения массива одинаковы. и равен среднему значению H в исходном массиве.

Более наглядно на примере для d=2, N=4 и k=2:

M=[[1,2,3,4],[1,2,3,4],[1,2,3,4],[1,2,3,4]] и

N=[[1.5,1.5,3.5,3.5],[1.5,1.5,3.5,3.5],[1.5,1.5,3.5,3.5],[1.5,1.5,3.5,3.5]] Это связано с существующим вопросом: группировка 2D-массива в среднем Тем не менее, это работает только для 2D-массива и не дает массиву той формы, которую я хочу.

Я пытался реализовать это сам в случае d=2, но если сделать то же самое для более высокого измерения, это означало бы повторение циклов for d-раз, что кажется непомерно высоким (я не понимаю, как это сделать иначе) . Я уверен, что есть более компактный и эффективный способ сделать это. Моя попытка d=2 :
def local_average_img(M,k): l=len(M[0]) N = np.zeros((l,l)) для x в диапазоне (l): для y в диапазоне (l): print(np.mean(M[(x//k)*k:(x//k)*k+k, (y//k)*k:(y//k)*k+k])) N[x][y]=np.mean(M[(x//k)*k:(x//k)*k+k, (y//k)*k:(y//k)* к+к]) возврат (Н) M = np.array([[1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]]) к = 2 результат = local_average_img(M, k) печать (результат)
Ответить

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

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

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

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

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