Minimum in Intervall

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Carsten1983
User
Beiträge: 20
Registriert: Montag 9. Juni 2008, 14:17
Wohnort: Halle/Saale

Minimum in Intervall

Beitragvon Carsten1983 » Mittwoch 11. März 2009, 16:47

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
Benutzeravatar
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Beitragvon ms4py » Mittwoch 11. März 2009, 17:15

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
DasIch
User
Beiträge: 2423
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Beitragvon DasIch » Mittwoch 11. März 2009, 17:17

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
Carsten1983
User
Beiträge: 20
Registriert: Montag 9. Juni 2008, 14:17
Wohnort: Halle/Saale

Beitragvon Carsten1983 » Mittwoch 11. März 2009, 17:17

Ich dachte es gibt vielleicht eine Standardfunktion, die mir nicht geläufig ist.
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Beitragvon CM » Mittwoch 11. März 2009, 17:59

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
Benutzeravatar
Hyperion
Moderator
Beiträge: 7472
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Re: Minimum in Intervall

Beitragvon Hyperion » Mittwoch 11. März 2009, 18:42

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?
Benutzeravatar
snafu
User
Beiträge: 5424
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Beitragvon snafu » Mittwoch 11. März 2009, 18:57

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.
shcol (Repo | Doc | PyPi)
Carsten1983
User
Beiträge: 20
Registriert: Montag 9. Juni 2008, 14:17
Wohnort: Halle/Saale

Beitragvon Carsten1983 » Donnerstag 12. März 2009, 07:25

Danke für die Antworten. :D

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder