2017-01-22 2 views
-1

In meinem Programm versuche ich, die Top 10 Array-Elemente mit ihren Indizes zu erhalten. Die Art des Arrays ist ndarray.So verwenden Sie numpy.sort für ndarray

for a in arr: 
    print(a) 

(0, 112354) 0.11235445 
(0, 875) 0.155235445 
(0, 6135) -0.14445445 
... 

Ich versuche numpy.sort dafür zu verwenden und das Array als Parameter übergeben, aber nicht das nötige Ergebnis.

Wie bekomme ich die Top 10 Array-Elemente und ihre Indizes?

UPDATED

pprint(arr) Der Ausgang ist

<1x28382 sparse matrix of type '<class 'numpy.float64'>' 
    with 18404 stored elements in Compressed Sparse Row format> 

print(arr) Rückkehr:

(0, 11098) 0.113315317878 
    (0, 6775) 0.0513432082411 
    (0, 5107) 0.0544519626112 
    (0, 98) 0.059766413309 
    (0, 27042) 0.104718642966 
    (0, 22622) 0.104718642966 
    (0, 6135) 0.104718642966 

Eigentlich ist arrsklearn.svm.SVC.coef_ Objekt.

Vielen Dank für Ihre Hilfe.

+0

Können Sie (a) Ihr Code, (b) ein Beispiel für Inputs und was Sie * bekommen wollen, (c) ein Beispiel für Inputs und was Sie * eigentlich * bekommen? – Tagc

+0

Bitte geben Sie einen Ausdruck Ihres Arrays an und auf welcher Achse Sie sortieren möchten –

+0

print verwerfen nützliche Informationen. Kannst du die Ausgabe von arr [: 2] geben, um die Struktur zu verstehen? Worauf willst du sortieren? –

Antwort

0

Da dies eine spärliche Matrix ist, ist es effizienter, unter a.data zu arbeiten.

Ein einfaches Beispiel:

from numpy import * 
import scipy 
a=zeros(12,int) 
a[:6]=range(6) 
shuffle(a) 
a=scipy.sparse.csr_matrix(a.reshape(4,3)) 
print(a.toarray());print(a) 

# a is 
[[4 0 1] 
[3 0 5] 
[2 0 0] 
[0 0 0]] 

# or in csr format 
(0, 1) 5.0 
(0, 2) 3.0 
(1, 2) 2.0 
(3, 0) 1.0 
(3, 1) 4.0 

dann die n größten Werte finden, und die Zeile und Spalte zugeordnet Indizes:

n=3 # the three biggest 
bigs=a.data.argsort()[:-n-1:-1] 
r,c=a.nonzero() 
R,C=r[bigs],c[bigs] 
print("the 3 biggest are in ",*zip(R,C)) 

das gibt:

the 3 biggest are in (0, 1) (3, 1) (0, 2) 
+0

Sorry, es hat nicht geholfen. Die Frage wurde aktualisiert. – StuffHappens