How to concatenate two matrices in Python?

I have two csr_matrix , uniFeature and biFeature .

I want a new matrix Feature = [uniFeature, biFeature] . But if I concatenate them directly, an error occurs indicating that the Feature matrix is ​​a list. How to achieve matrix concatenation and get a matrix of the same type, i.e. A csr_matrix ?

And this will not work if I do it after concatenation: Feature = csr_matrix(Feature) It gives an error:

 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_ 
+6
source share
1 answer

The scipy.sparse module includes the hstack and vstack .

For instance:

 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]: hA 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]: vA 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]]) 
+15
source

Source: https://habr.com/ru/post/946332/


All Articles