2017-09-04 2 views
2

Ich habe eine Liste von Zahlen und deren len(lex) = 6064 dieWie kann ich eine Liste und eine csr Matrix verschmelzen

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

und einer csr Matrix

tweets.shape = (6064, 2500) 

Wie fusionieren sieht wie folgt aus ihnen, dass ich mich versucht, sie zu zwei Listen beiden konvertieren, aber wenn ich versuche, erhalte ich

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

nachdem ich die Daten für tra einen Fehler daran arbeiten aufgespalten ining bekomme ich folgende Fehler für

nb.fit(X_train, y_train) 


ValueError: setting an array element with a sequence. 

wie kann ich diese Liste als Spalte dieser Matrix hinzufügen

+0

Bitte lesen Sie [fragen] und gib ein [mcve]. Im Moment kann ich nicht einmal anfangen zu sagen, was du verlangst. –

+0

Warum sollten Sie: 'listen (tweets)' '? – Divakar

+0

Versuchen Sie, die Liste mit 'np.asarray (mylist)' in ein Array zu konvertieren und fahren Sie fort. –

Antwort

3

Sie scipy.sparse.hstack nutzen könnten diese beiden horizontal (spaltenweise) zu stapeln. Wir müssen nur die Liste auf eine Spaltenvektor (gesprochen in Bezug auf die dünn besetzte Matrizen) oder einem 2D-Array mit einer einzigen Spalte konvertieren -

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

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

Probelauf -

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

Vielen Dank. perfekt –

Verwandte Themen