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:
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.
