Я хочу создать квадратную матрицу, подобную этой, где ее элементом является квадратная матрица либо квадратная матрица B или отрицательная единичная матрица или нули. Я создал матрицу B, а также -I, а также создал матрицу Z из нулей. Матрицы квадратов B, I и Z с одинаковыми размерами n1 * n1 (или n2 * n2) и конечной матрицей, которую я хочу иметь размерами n * n, где n = n1 * n2
Если, например, B, I и Z равны 4*4, финал будет 16*16.
Я знаю, как объединять и складывать матрицы, но я не знаю, как лучше это реализовать, так как нужно сделать приведенный ниже процесс 64! раз.
for iter in range(64):
if iter == 0:
temp = B
temp = np.hstack((temp, I))
temp = np.hstack((temp, Z))
temp = np.hstack((temp, Z))
if iter == 1:
temp2 = I
temp2 = np.hstack((temp2, B))
temp2 = np.hstack((temp2, I))
temp2 = np.hstack((temp2, Z))
if iter == 2:
temp3 = Z
temp3 = np.hstack((temp3, I))
temp3 = np.hstack((temp3, B))
temp3 = np.hstack((temp3, I))
if iter == 3:
temp4 = Z
temp4 = np.hstack((temp4, Z))
temp4 = np.hstack((temp4, I))
temp4 = np.hstack((temp4, B))
.......
........
........
st1 = np.vstack((temp, temp2))
st2 = np.vstack((st1, temp3))
.......
Могу ли я сохранить матрицы n * n в элементы массива, а затем объединить или сложить их?