Группировать значения в матрице NxN в матрицу N / 2 x N / 2 - PullRequest
1 голос
/ 14 апреля 2020

Предположим, у меня есть следующая матрица 4x4:

import numpy as np
np.array([[1, 2, 3, 4],
          [5, 6, 7, 8],
          [9,10,11,12],
          [13,14,15,16]])

I wi sh, чтобы сгруппировать значения в подматрицы 2x2, суммировать их и собрать результат в матрицу 2x2, чтобы результат этот случай будет:

[
[14, 22],
[46, 54]
]

Каков самый numpy -i sh способ сделать это?

1 Ответ

1 голос
/ 14 апреля 2020

Вы можете использовать .reshape метод и затем суммировать по оси:

import numpy as np

data = np.array([[1, 2, 3, 4],
                 [5, 6, 7, 8],
                 [9,10,11,12],
                 [13,14,15,16]])

bs = 2 #block size
data_r = data.reshape(bs,bs,bs,bs)
data_r
array([[[[ 1,  2],
         [ 3,  4]],
        [[ 5,  6],
         [ 7,  8]]],
       [[[ 9, 10],
         [11, 12]],
        [[13, 14],
         [15, 16]]]])

data_r.sum(axis=(1,3))
array([[14, 22],
       [46, 54]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...