Разграничение области матовой матрицы - PullRequest
0 голосов
/ 01 декабря 2018

У меня матрица размером 560x560, которую я хочу преобразовать в матрицу 28x28.
Поэтому я хочу разделить его на регионы размером 16х16, вычислить среднее значение для каждого из таких регионов и поместить это значение в новую матрицу.

Теперь у меня есть:

import numpy as np

oldMat = ...                      #I load the 560x560 matrix
newMat = np.zeros((28,28))        #Initializes the new matrix of size 28x28

for i in range(0,560, 16):
    for j in range(0,560, 16):    #Loops over the top left corner of each region 
        sum = 0
        for di in range(16):
            for dj in range(16):  #Loops over the indices of the elements in each region
                sum += oldMat[i+di, j+dj]

        mean = sum/256            #Calculates the mean of the elements of each region
        newMat[i][j] = mean


Есть ли более быстрый способ сделать это?(Я уверен, что есть.)

1 Ответ

0 голосов
/ 01 декабря 2018

Если вы просто хотите изменить форму своей матрицы с 2D --> 4D, то вы можете использовать np.reshape():

import numpy as np

np.random.seed(0)

data = np.random.randint(0,5,size=(6,6))

Выход:

[[4 0 3 3 3 1]
 [3 2 4 0 0 4]
 [2 1 0 1 1 0]
 [1 4 3 0 3 0]
 [2 3 0 1 3 3]
 [3 0 1 1 1 0]]

Затем изменить форму:

data.reshape((3,3,2,2))

Возвращает:

[[[[4 0]
   [3 3]]

  [[3 1]
   [3 2]]

  [[4 0]
   [0 4]]]


 [[[2 1]
   [0 1]]

  [[1 0]
   [1 4]]

  [[3 0]
   [3 0]]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...