2017-02-14 30 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

檢查[numpy.bmat](https://docs.scipy.org/doc/numpy/reference/generated/numpy.bmat.html)。 (名稱可能是指塊矩陣) – sascha

+0

您也可以簡單地搜索「numpy連接矩陣」 – Pavel

+2

'numpy.bmat'返回一個'matrix'而不是'array'。這不僅僅是一個微妙之處,因爲它們的行爲不同,例如在切片或減少操作時。 –

回答

5

一種方式做到這一點是使用vstackhstack

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]]