2016-11-22 16 views
2

私は2つの疎行列(sklearnHashVectorizerから作成され、各組は特徴に対応しています。私は後でそれらをクラスタリングに使用するためにそれらを連結したいと思う。しかし、2つの行列の行次元が同じではないため、次元の問題に直面しています。ここ異なる次元の2つの疎行列を積み重ねる

は一例であり:

Xa = [-0.57735027 -0.57735027 0.57735027 -0.57735027 -0.57735027 0.57735027 
    0.5   0.5  -0.5   0.5   0.5  -0.5   0.5 
    0.5  -0.5   0.5  -0.5   0.5   0.5  -0.5 
    0.5   0.5  ] 

Xb = [-0.57735027 -0.57735027 0.57735027 -0.57735027 0.57735027 0.57735027 
-0.5   0.5   0.5   0.5  -0.5  -0.5   0.5 
-0.5  -0.5  -0.5   0.5   0.5  ] 

両方XaXbタイプ<class 'scipy.sparse.csr.csr_matrix'>です。図形はXa.shape = (6, 1048576) Xb.shape = (5, 1048576)です。私が手にエラーが(私はそれが起こる今、なぜ知っている)である:彼らの不規則な大きさにもかかわらず、スパース行列をスタックする方法は

X = hstack((Xa, Xb)) 
    File "/usr/local/lib/python2.7/site-packages/scipy/sparse/construct.py", line 464, in hstack 
    return bmat([blocks], format=format, dtype=dtype) 
    File "/usr/local/lib/python2.7/site-packages/scipy/sparse/construct.py", line 581, in bmat 
    'row dimensions' % i) 
ValueError: blocks[0,:] has incompatible row dimensions 

ありますか?たぶん、いくつかのパディングがありますか?

私はこれらの記事に見てきた:

+0

は、あなたの行列Xa及びXbのの形状を投稿することができますか? –

+0

更新された形のポスト。 – user1717931

+0

私は回避策を見つけたと思います:bumpyを使って連結し、その結果をcsr_matrixに変換しました。これがOKかどうかもっと調べる。 Xc = np.concatenate([Xa.data、Xb.data])を実行してからsm = sparse.csr_matrix(Xc)を実行します。 – user1717931

答えて

3

空のスパース行列で埋め込むことができます。それは、より大きな行列として行の同じ数を持つようにhorizo​​ntalyスタックにしたい

は、それはあなたがパッドに小さな行列を必要としています。あなたのためには、は、の縦型スタック(difference in number of rows, number of columns of original matrix)のマトリックスを持っています。このよう

:その結果

from scipy.sparse import csr_matrix 
from scipy.sparse import hstack 
from scipy.sparse import vstack 

# Create 2 empty sparse matrix for demo 
Xa = csr_matrix((4, 4)) 
Xb = csr_matrix((3, 5)) 


diff_n_rows = Xa.shape[0] - Xb.shape[0] 

Xb_new = vstack((Xb, csr_matrix((diff_n_rows, Xb.shape[1])))) 
#where diff_n_rows is the difference of the number of rows between Xa and Xb 

X = hstack((Xa, Xb_new)) 
X 

は:

<4x9 sparse matrix of type '<class 'numpy.float64'>' 
    with 0 stored elements in COOrdinate format> 
関連する問題