Seite 1 von 1

Minimum in Intervall

Verfasst: Mittwoch 11. März 2009, 16:47
von Carsten1983
Hallo allerseits,

ich habe eine Liste (oder auch ein numpy.array) t z.B. so:

Code: Alles auswählen

t=[1.3 , 0.2 , -0.1 , 5 , 0.6] 
Aus dieser Liste möchte ich das Minimum finden, das im Intervall zwischen 0 und 1 liegt. Ich suche nun eine Möglichkeit, wie ich das weniger umständlich machen kann, als mit schleifen. Gibts da nicht irgendeinen Befehl?

Danke

Verfasst: Mittwoch 11. März 2009, 17:15
von ms4py
Was ist an Schleifen umständlich?!

Code: Alles auswählen

min = 1.0
for item in t:
  if item >= 0.0 and item < min:
    min = item

Verfasst: Mittwoch 11. März 2009, 17:17
von DasIch

Code: Alles auswählen

In [1]: foo = [1.3, 0.2, -0.1, 5, 0.6]

In [2]: min(num for num in foo if 0 < num < 1)
Out[2]: 0.20000000000000001

Verfasst: Mittwoch 11. März 2009, 17:17
von Carsten1983
Ich dachte es gibt vielleicht eine Standardfunktion, die mir nicht geläufig ist.

Verfasst: Mittwoch 11. März 2009, 17:59
von CM
Mit numpy im Hintergrund geht auch:

Code: Alles auswählen

In [105]: x
Out[105]: array([ 1.3,  0.2, -0.1,  5. ,  0.6])

In [106]: criterion = (x >= 0) & (x <= 1)

In [107]: min(x[criterion])
Out[107]: 0.20000000000000001
Das kann man natürlich auch in einen Ausdruck in eine Zeile tippen, aber ich denke, so ist es deutlicher. Bei kleinen Arrays sollte es kein Problem sein - bei großen Arrays oder vielen Aufrüfen bin ich mir aber nicht sicher. Müßte man testen, habe ich aber jetzt keine Zeit zu.

Gruß,
Christian

Re: Minimum in Intervall

Verfasst: Mittwoch 11. März 2009, 18:42
von Hyperion
Carsten1983 hat geschrieben:Ich suche nun eine Möglichkeit, wie ich das weniger umständlich machen kann, als mit schleifen. Gibts da nicht irgendeinen Befehl?
Egal was es da geben könnte: Intern muss irgend wann sowieso mit einer Schleife gearbeitet werden! Wie sollte das auch anders gehen, ohne jedes Element einmal angefasst zu haben?

Verfasst: Mittwoch 11. März 2009, 18:57
von snafu
Ich denke mal eher, dass es in solchen Fällen um Lesbarkeit und Handlichkeit geht. Dass da auf C-Ebene eine Schleife gemacht werden muss, sollte klar sein.

Verfasst: Donnerstag 12. März 2009, 07:25
von Carsten1983
Danke für die Antworten. :D