Вы можете использовать np.concatenate
для построения каждой строки вашей матрицы матриц.
B, I = matrix(size)
A = np.zeros((size, size))
M = []
for i in range(size):
if i == 0:
M.append(np.concatenate([ B, I, np.tile(A, (1, size-2)) ], axis = -1 ))
elif i == size-1:
M.append(np.concatenate([ np.tile(A, (1, size-2)), I, B ], axis = -1))
else:
M.append(np.concatenate([ np.tile(A, (1, i-1)), I, B, I, np.tile(A, (1, size-i-2))], axis = -1))
M = np.concatenate(M, axis = 0)
Использование списка:
M = np.concatenate([
np.concatenate([ B, I, np.tile(A, (1, size-2)) ], axis = -1 ) if i == 0 else
np.concatenate([ np.tile(A, (1, size-2)), I, B ], axis = -1) if i == size-1
else np.concatenate([ np.tile(A, (1, i-1)), I, B, I, np.tile(A, (1, size-i-2))], axis = -1)
for i in range(size)], axis = 0)