2012-09-02 273 views
4

如何将1列矩阵添加到稀疏矩阵或将稀疏矩阵添加到列矩阵(无论哪种方式)?它不应该替换数据,只需将其加入一种数据类型即可。组合矩阵和稀疏矩阵

稀疏矩阵:

>>print type(X) 
>>print X.shape 
<class 'scipy.sparse.csr.csr_matrix'> 
(53, 6596) 

列补充:

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

你怎么能这样做呢?

回答

8

从文档,在我看来,你从scipy.sparse模块寻找hstack/vstack

Python 2.6.5 (r265:79063, Apr 16 2010, 13:57:41) 
[GCC 4.4.3] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import scipy.sparse as ssp 
>>> print ssp.hstack.__doc__ 

    Stack sparse matrices horizontally (column wise) 

    Parameters 
    ---------- 
    blocks 
     sequence of sparse matrices with compatible shapes 
    format : string 
     sparse format of the result (e.g. "csr") 
     by default an appropriate sparse matrix format is returned. 
     This choice is subject to change. 

    See Also 
    -------- 
    vstack : stack sparse matrices vertically (row wise) 

    Examples 
    -------- 
    >>> from scipy.sparse import coo_matrix, vstack 
    >>> A = coo_matrix([[1,2],[3,4]]) 
    >>> B = coo_matrix([[5],[6]]) 
    >>> hstack([A,B]).todense() 
    matrix([[1, 2, 5], 
      [3, 4, 6]]) 


>>> 
+0

虽然文件在这里说,'block'应该是“稀疏矩阵的序列”,它似乎传递混合'numpy.array'和'scipy.sparse'很好。唯一的副作用是输出矩阵格式可能不是预期的类型,应指定'format'来强制格式转换。 – zaxliu