2012-09-03 155 views
6

如果您有兩個numpy矩陣,您如何將它們合併爲一個?他們應水平加入,使加入兩個numpy矩陣

[[0]   [1]    [[0][1] 
[1]  + [0]   =  [1][0] 
[4]   [1]    [4][1] 
[0]]  [1]]    [0][1]] 

例如,對於這些矩陣:

>>type(X) 
>>type(Y) 
>>X.shape 
>>Y.shape 
<class 'numpy.matrixlib.defmatrix.matrix'> 
<class 'numpy.matrixlib.defmatrix.matrix'> 
(53, 1) 
(53, 1) 

我已經試過hstack卻得到一個錯誤:

>>Z = hstack([X,Y]) 

Traceback (most recent call last): 
    File "labels.py", line 85, in <module> 
    Z = hstack([X, Y]) 
    File "C:\Python27\lib\site-packages\scipy\sparse\construct.py", line 263, in h 
stack 
    return bmat([blocks], format=format, dtype=dtype) 
    File "C:\Python27\lib\site-packages\scipy\sparse\construct.py", line 329, in b 
mat 
    raise ValueError('blocks must have rank 2') 
ValueError: blocks must have rank 2 
+0

它應該工作。奇怪的是,你的錯誤信息指的是稀疏矩陣,而你的類型(X)表示你有矩陣而不是稀疏矩陣。 –

回答

12

從回溯來看,看起來你已經完成了from scipy.sparse import *或類似的工作,因此numpy.hstackscipy.sparse.hstack所遮蔽。 numpy.hstack正常工作:

>>> X = np.matrix([[0, 1, 4, 0]]).T 
>>> Y = np.matrix([[1, 0, 1, 1]]).T 
>>> np.hstack([X, Y]) 
matrix([[0, 1], 
     [1, 0], 
     [4, 1], 
     [0, 1]]) 
+0

+1謝謝..是的,我正在使用'scipy.sparse.hstack'! – Zach

+0

@Zach:不客氣。有點不幸的是'scipy.sparse.hstack'不能處理稠密矩陣。 –

+1

這就是爲什麼你應該學會閱讀錯誤信息:) –