2017-06-06 65 views
-1

我有一個6行5列矩陣,我想添加到我的矩陣作爲新的第6列長度爲6的1d向量,以便我最終一個6x6矩陣。添加一個向量作爲一個新的列到矩陣

一維向量

[0.77777777777777779, 0.061224489795918366, 0.86864406779661019, 0.66666666666666663, 0.96470588235294119, 83.333333333333343] 

矩陣

[[ 42.   0.   6.   0.   6.  ] 
[ 0.   3.   8.   0.   38.  ] 
[ 6.   0.   205.   0.   25.  ] 
[ 0.   0.   2.   4.   0.  ] 
[ 1.   0.   8.   0.   246.  ] 
[ 0.85714286 1.   0.89519651 1.   0.78095238]] 

我試過np.hstack但這並不是做這件事的工作。

+0

'np.concatenate'怎麼樣? – jadsq

回答

2

爲什麼np.hstack([matrix, vector])不工作的原因是因爲形狀不適合對方:

>>> vector.shape 
(6,) 
>>> matrix.shape 
(6, 5) 

但是,如果你讓一個vector矢量vector[:, np.newaxis]然後np.hstack可以處理形狀:

>>> matrix = np.arange(30).reshape(6,5) 
>>> vector = -np.ones(6) 
>>> matrix 
array([[ 0, 1, 2, 3, 4], 
     [ 5, 6, 7, 8, 9], 
     [10, 11, 12, 13, 14], 
     [15, 16, 17, 18, 19], 
     [20, 21, 22, 23, 24], 
     [25, 26, 27, 28, 29]]) 
>>> vector 
array([-1., -1., -1., -1., -1., -1.]) 
>>> vector[:, np.newaxis] 
array([[-1.], 
     [-1.], 
     [-1.], 
     [-1.], 
     [-1.], 
     [-1.]]) 
>>> vector[:, np.newaxis].shape 
(6, 1) 
>>> np.hstack([matrix, vector]) 
Rückverfolgung (innerste zuletzt): 
    Python-Shell, prompt 23, line 1 
    File "C:\Python34\Lib\site-packages\numpy\core\shape_base.py", line 293, in hstack 
    return _nx.concatenate(arrs, 1) 
builtins.ValueError: all the input arrays must have same number of dimensions 
>>> np.hstack([matrix, vector[:, np.newaxis]]) 
array([[ 0., 1., 2., 3., 4., -1.], 
     [ 5., 6., 7., 8., 9., -1.], 
     [ 10., 11., 12., 13., 14., -1.], 
     [ 15., 16., 17., 18., 19., -1.], 
     [ 20., 21., 22., 23., 24., -1.], 
     [ 25., 26., 27., 28., 29., -1.]]) 
+0

嘿邁克爾。非常感謝你。現在就開始工作吧! – SunTour

相關問題