Я ищу некоторую быструю функцию для создания блоков в матрице из других матриц, как на картинке (нижняя матрица - результат): матрица
Я также написал некоторый код для выполненияэто, но для многих матриц работает медленно.
import numpy as np
im1 = np.array([[1, 2], [3, 4]])
im2 = np.array([[5, 6], [7, 8]])
im3 = np.array([[9, 10], [11, 12]])
im4 = np.array([[13, 14], [15, 15]])
arrays = [im1, im2, im3, im4]
def array_rearrangement(arrays):
num = int(len(arrays) ** 0.5)
size = arrays[0].shape[0] * num
result = np.zeros((size, size))
k = -1
p = -1
for k1 in range(num * num):
if k1 % num == 0:
k = 0
if k1 % num == 0:
p += 1
im = arrays[k1]
for i in range(num):
for j in range(num):
x_index = i * num + p
y_index = j * num + k
result[x_index, y_index] = im[i, j]
k += 1
print(result)
array_rearrangement(arrays)