2016-05-20 7 views
2

Mein CodeWie Indizes von Maximalwerten in Anzahl, aber mit Schwellenwert erhalten?

import numpy as np 
from numpy import loadtxt 

s = loadtxt("sest.txt", delimiter=" ", unpack=False) 
b = loadtxt("base.txt", delimiter=" ", unpack=False) 
d=b-s 
e = np.absolute(d) 
me = e.argsort()[-100:][::-1] 
print me 

I

[400600 401600 399600 400601 401601 399601 401599 400599 399599 399602 
401602 400602 399598 401598 400598 400603 401603 399603 401597 399597 
401604 400597 399604 400604 400605 399605 401605 401596 399596 400596 
399606 401606 400606 399595 401595 400595 399607 401607 400607 400608 
400594 401608 399608 401594 399594 400609 401609 399609 401593 400593 
399593 401610 400610 399610 400592 401592 399592 399611 400611 401611 
399591 401612 401591 400612 400591 399612 399613 401613 400613 399590 
400590 401590 400614 399614 401614 399589 400589 401589 401615 399615 
400615 401616 399616 400616 400588 399588 401588 400617 401617 399617 
401587 400587 399587 400618 399618 401618 399586 400586 401586 400619] 

Works fine.But bekam ich will alle Elemente in d angeben, die dann 2,5 größer sind? So ist mir egal, ob es 100 oder 200 sind nur alles über diesem Schwellenwert. Ist es möglich, Argsort zu erweitern oder nicht?

Antwort

3

Wenn Sie nur Array-Elemente über einem bestimmten Schwellenwert suchen, können Sie x [x> a] verwenden, wobei a der Schwellenwert ist. Zu Illustrationszwecken werde ich jetzt mit ipython zeigen und später bearbeiten. Nehmen wir an, "x" ist ein numpiges Array:

In [9]: x=np.random.rand(1,10) # an array with random elements 

    In [10]: print x[x>0.6] # select elements above 0.6 
    [ 0.71733906 0.74028607 0.66293195 0.86649922 0.7423685 0.71807904 
    0.8215429 ] 

    In [11]: print x 
    [[ 0.36655557 0.71733906 0.74028607 0.66293195 0.86649922 0.21478604 
    0.7423685 0.71807904 0.30482062 0.8215429 ]] 
Verwandte Themen