2012-09-03 32 views
6

Si tiene dos matrices numpy, ¿cómo puede unirlas en una sola? Ellos deben ser unidas horizontalmente, de modo queuniendo dos matrices numpy

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

Por ejemplo, con estas matrices:

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

He tratado hstack pero conseguir un error:

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

Debería funcionar. Por extraño que parezca, tu mensaje de error se refiere a las matrices dispersas, mientras que tu tipo (X) dice que tienes matrices y no matrices dispersas. –

Respuesta

12

A juzgar por el rastreo, Parece que ha hecho from scipy.sparse import * o algo similar, por lo que numpy.hstack aparece sombreado por scipy.sparse.hstack. numpy.hstack funciona bien:

>>> 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 gracias ... ah sí, ¡estaba usando 'scipy.sparse.hstack' en su lugar! – Zach

+0

@Zach: de nada. Es un poco desafortunado que 'scipy.sparse.hstack' no pueda manejar matrices densas. –

+1

Es por eso que deberías aprender a leer los mensajes de error :) –

Cuestiones relacionadas