2013-06-02 57 views
6

Tôi có hai số csr_matrix, uniFeaturebiFeature.Làm thế nào để nối hai ma trận trong Python?

Tôi muốn có ma trận mới Feature = [uniFeature, biFeature]. Nhưng nếu tôi trực tiếp nối chúng theo cách này, có một lỗi nói rằng ma trận Feature là một danh sách. Làm thế nào tôi có thể đạt được sự nối ma trận và vẫn nhận được cùng một loại ma trận, tức là một csr_matrix?

Và nó không hoạt động nếu tôi làm điều này sau khi nối: Feature = csr_matrix(Feature) Nó cung cấp cho các lỗi:

Traceback (most recent call last): 
    File "yelpfilter.py", line 91, in <module> 
    Feature = csr_matrix(Feature) 
    File "c:\python27\lib\site-packages\scipy\sparse\compressed.py", line 66, in __init__ 
    self._set_self(self.__class__(coo_matrix(arg1, dtype=dtype))) 
    File "c:\python27\lib\site-packages\scipy\sparse\coo.py", line 185, in __init__ 
    self.row, self.col = M.nonzero() 
TypeError: __nonzero__ should return bool or int, returned numpy.bool_ 

Trả lời

15

Module scipy.sparse bao gồm các chức năng hstackvstack.

Ví dụ:

In [44]: import scipy.sparse as sp 

In [45]: c1 = sp.csr_matrix([[0,0,1,0], 
    ...:      [2,0,0,0], 
    ...:      [0,0,0,0]]) 

In [46]: c2 = sp.csr_matrix([[0,3,4,0], 
    ...:      [0,0,0,5], 
    ...:      [6,7,0,8]]) 

In [47]: h = sp.hstack((c1, c2), format='csr') 

In [48]: h 
Out[48]: 
<3x8 sparse matrix of type '<type 'numpy.int64'>' 
    with 8 stored elements in Compressed Sparse Row format> 

In [49]: h.A 
Out[49]: 
array([[0, 0, 1, 0, 0, 3, 4, 0], 
     [2, 0, 0, 0, 0, 0, 0, 5], 
     [0, 0, 0, 0, 6, 7, 0, 8]]) 

In [50]: v = sp.vstack((c1, c2), format='csr') 

In [51]: v 
Out[51]: 
<6x4 sparse matrix of type '<type 'numpy.int64'>' 
    with 8 stored elements in Compressed Sparse Row format> 

In [52]: v.A 
Out[52]: 
array([[0, 0, 1, 0], 
     [2, 0, 0, 0], 
     [0, 0, 0, 0], 
     [0, 3, 4, 0], 
     [0, 0, 0, 5], 
     [6, 7, 0, 8]]) 
+0

Cảm ơn rất nhiều! Chính xác những gì tôi cần –

+0

Tôi nhận được lỗi này: LoạiError: vstack() đã nhận được đối số từ khóa không mong muốn 'format' – Moh

+0

GIẢI PHÁP: Vấn đề là: Thay vì nhập mô-đun scipy.parse, tôi đã nhập scipy – Moh

Các vấn đề liên quan