2017-09-04 10 views
2

をマージしない私は、番号のリストを持っており、そのlen(lex) = 6064私はそれらをマージするにはどうすればよいこのはどのように私はリストとCSRマトリックス

[0, 
0, 
1, 
0, 
0, 
-1, 
1, 
1, 
0, 
0, 
0, 
0, 
1, 
0,] 

とCSRマトリックス

tweets.shape = (6064, 2500) 

のように見えるもの二つのリストの両方に変換しようとしたが、私はそれで作業しようとしたとき、私はトラのためのデータを分割した後、私はエラー

tweets = list(tweets) 
lex = list(lex) 
tweets_final = np.column_stack([tweets, lex]) 

を取得iningは、私はあなたが水平にこれら二つをスタックするscipy.sparse.hstackを使用することができ、その行列

+0

お読みください[尋ねる]と[mcve]を与える。現在のところ、私はあなたが求めていることを伝えることさえできません。 –

+0

なぜあなたは 'list(つぶやき)'をしますか? – Divakar

+0

'np.asarray(mylist)'を使用してリストを配列に変換してから、処理を進めてください。 –

答えて

3

の列(列方向)としてそのリストを追加する方法

nb.fit(X_train, y_train) 


ValueError: setting an array element with a sequence. 

ために、次のエラーが発生します。私達はちょうど列ベクトル(スパース行列の用語でいえば)または単一列を持つ2次元配列にリストを変換する必要がある -

scipy.sparse.hstack((tweets, csr_matrix(lex).T)) 

scipy.sparse.hstack((tweets, np.asarray(lex)[:,None])) 

サンプル実行 -

In [189]: from scipy.sparse import csr_matrix 

In [194]: import scipy as sp 

In [190]: a = np.random.randint(0,4,(5,10)) 

In [192]: a 
Out[192]: 
array([[2, 1, 1, 1, 0, 3, 1, 3, 2, 1], 
     [0, 2, 1, 2, 3, 0, 1, 1, 2, 3], 
     [0, 1, 1, 1, 2, 3, 0, 1, 0, 1], 
     [0, 0, 3, 0, 3, 0, 1, 0, 3, 1], 
     [1, 0, 2, 3, 3, 3, 2, 2, 0, 1]]) 

In [193]: b = [9,8,7,6,5] # equivalent to lex 

In [191]: A = csr_matrix(a) # equivalent to tweets 

In [195]: sp.sparse.hstack((A, csr_matrix(b).T)) 
Out[195]: 
<5x11 sparse matrix of type '<type 'numpy.int64'>' 
    with 42 stored elements in COOrdinate format> 

In [197]: _.toarray() # verify values by converting to dense array 
Out[197]: 
array([[2, 1, 1, 1, 0, 3, 1, 3, 2, 1, 9], 
     [0, 2, 1, 2, 3, 0, 1, 1, 2, 3, 8], 
     [0, 1, 1, 1, 2, 3, 0, 1, 0, 1, 7], 
     [0, 0, 3, 0, 3, 0, 1, 0, 3, 1, 6], 
     [1, 0, 2, 3, 3, 3, 2, 2, 0, 1, 5]]) 
+0

ありがとうございます。完璧な –

関連する問題