Pythoni c способ нарезки 2-d numpy массивов на более мелкие квадраты - PullRequest
0 голосов
/ 10 января 2020

Я пытаюсь обработать изображение RAW, используя numpy.

Печать необработанного изображения * Массив numpy возвращает это:

[[372 387 247 ... 560 359 364]
 [380 392 243 ... 599 342 356]
 [236 238 358 ... 355 600 564]
 ...
 [547 553 344 ...  74  69  69]
 [349 328 560 ...  68  74  73]
 [341 334 537 ...  70  71  73]]

с формой 4384, 5632.

Я хочу получить список списков (2D-список), чтобы каждая запись соответствовала квадрату 8 * 8 массива 2d numpy.

Это указывало бы на список измерений 4384/8 , 5632/8.

Я могу думать только об использовании циклов while и добавлении каждого квадрата в список в данный момент, но я думал, что должно быть лучший способ.

Есть ли более питон c способ сделать это, возможно, с использованием понимания списка и нарезки?

1 Ответ

1 голос
/ 10 января 2020

Ниже приведено краткое объяснение ответа

# 1.  Reshape Image as (height/8, 8, width/8,8)
print(rawimg.reshape(rawimg.shape[0]//8, 8, -1, 8).shape)
# 2. Swap 1 and 2nd index
print(rawimg.reshape(rawimg.shape[0]//8, 8, -1, 8).swapaxes(1,2).shape)
# 3. Reshape again (-1,8,8) with -1 being combined both (548*704) arrays of shape 8x8
print(rawimg.reshape(rawimg.shape[0]//8, 8, -1, 8).swapaxes(1,2).reshape(-1,8,8).shape)


(548, 8, 704, 8)
(548, 704, 8, 8)
(385792, 8, 8)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...