Есть ли обратный способ создания блоков массива? - PullRequest
0 голосов
/ 07 мая 2019

У меня есть массив, форма которого (4,4), и я разделил его на блоки с (2,2), могу ли я получить противоположный способ снова получить форму (4,4)?

Пример:

array_4x4 = [[100,123,3,7],
         [134,43,67,90],
         [9,10,11,12],
         [13,14,15,16]]

blocks_2x2 = [[100,123,134,43],[3,7,67,90],[9,10,13,14],[11,12,15,16]]

Как мне снова получить первую фигуру?

blocks_2x2 = [[100,123,134,43],[3,7,67,90],[9,10,13,14],[11,12,15,16]]
num_blocks = 4
final_ = []
for i in range(num_blocks):
   for j in range(2):
       final_.append(np.array(blocks_2x2 [i])[:,j])

Как я мог это сделать?

1 Ответ

0 голосов
/ 07 мая 2019

Вы можете сделать это без использования numpy, как показано ниже:

blocks_2x2 = [[1,2,5,6],[3,4,7,8],[9,10,13,14],[11,12,15,16]]

result = []
for i in range(0,len(blocks_2x2)-1,2):
    for j in range(2):
        result.append(blocks_2x2[i][j*2:j*2+2] + blocks_2x2[i+1][j*2:j*2+2])

print(result)

Вывод:

[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]]

Мы повторяем каждые два подсписка в списке blocks_2x2 и присоединяемсякаждая первая и вторая половина двух списков.Обратите внимание, что конкретный код был протестирован только для предоставленных вами данных.

...