2012-09-03 14 views
6

यदि आपके पास दो numpy matrices हैं, तो आप उनमें से एक साथ कैसे जुड़ सकते हैं? वे, क्षैतिज में शामिल हो गए किया जाना चाहिए ताकिदो numpy matrices में शामिल होने

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

यह काम करना चाहिए। विचित्र रूप से पर्याप्त, आपका त्रुटि संदेश स्पैस मैट्रिस का संदर्भ देता है जबकि आपका प्रकार (एक्स) कहता है कि आपके पास matrices हैं और स्पैर मैट्रिस नहीं हैं। –

उत्तर

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

यही कारण है कि आपको त्रुटि संदेशों को पढ़ना सीखना चाहिए :) –

संबंधित मुद्दे