2017-02-14 2 views
3

Например, я хотел бы сделать что-то вроде этогоИспользуя numpy, можно ли определить матрицу в терминах других матриц?

import numpy as np 
A = np.array([[1,2,3],[4,5,6],[7,8,9]]) 
B = np.array([[1,1],[2,2],[3,3]]) 
C = np.zeros((2,2)) 
D = np.array([[A, B], [B.T, C]]) 

Для получения 5x5 ndarray с элементами

1, 2, 3, 1, 1 
4, 5, 6, 2, 2 
7, 8, 9, 3, 3 
1, 2, 3, 0, 0 
1, 2, 3, 0, 0 
+2

Check [numpy.bmat] (https://docs.scipy.org/doc/numpy/reference/generated/numpy.bmat.html). (name, вероятно, ссылаясь на блок-матрицу) – sascha

+0

Также вы можете просто найти «numpy join matrices» – Pavel

+2

'numpy.bmat' возвращает' matrix' не 'array'. Это более чем тонкость, потому что они ведут себя по-разному, например, при разрезании их или при сокращении операций. –

ответ

5

Один из способов сделать это является использование vstack и hstack:

D = np.vstack((np.hstack((A, B)), np.hstack((B.T, C)))) 
3

Вы можете почти получить это, используя np.r_, который складывает строки и np.c_, которые стеки колонны

D = np.r_[np.c_[A, B], np.c_[B.T, C]] 
Смежные вопросы