2012-09-03 21 views
6

Wenn Sie zwei numpy Matrizen haben, wie können Sie sie zu einem zusammenfügen? Sie sollten horizontal verbunden werden, so dasszwei numpy Matrizen verbinden

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

Zum Beispiel mit diesen Matrizen:

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

ich hstack versucht, aber einen Fehler:

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

Es sollte funktionieren. Seltsamerweise bezieht sich Ihre Fehlermeldung auf dünn besetzte Matrizen, während Ihr Typ (X) besagt, dass Sie Matrizen und keine dünn besetzten Matrizen haben. –

Antwort

12

Geht man von der Zurückverfolgungs, es scheint, als ob Sie from scipy.sparse import * oder etwas Ähnliches getan haben, so dass numpy.hstack von scipy.sparse.hstack beschattet wird. numpy.hstack funktioniert gut:

>>> 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 danke .. ah ja, ich benutzte 'scipy.sparse.hstack' stattdessen! – Zach

+0

@Zach: Gern geschehen. Es ist ein bisschen bedauerlich, dass 'scipy.sparse.hstack' nicht mit dichten Matrizen umgehen kann. –

+1

Deshalb sollten Sie lernen, Fehlermeldungen zu lesen :) –