def diag_block_mat_boolindex(L):
    shp = L[0].shape
mask = np.kron(np.eye(len(L)), np.ones(shp)) == 1
out = np.zeros(np.asarray(shp) * len(L), dtype=int)
out[mask] = np.concatenate(L).ravel()
return out
python numpy: как построить большой диагональный массив (матрицу) из двух небольших массивов