Seite 1 von 1
Zeile in der sich ein Minimum befindet ausgeben lassen
Verfasst: Sonntag 29. Dezember 2013, 10:45
von nadine_83
Hallo.
Ich habe ein Problem, dass bestimmt ganz simpel zu lösen ist, aber ich das einfach nicht hinbekomme. Also: Ich habe ein Array mit mehreren Zeilen und Spalten. In einer Zeile befindet sich ein Minimum. Ich weiß, wie ich herausbekomme, wie groß dieses ist und wo es sich befindet. Aber nicht, wie die anderen Daten in der zeile lauten und diese mir ausgeben zu lassen.
zum Bsp.:
4 6 7 8
3 7 6 7
5 8 6 9
also ist hier das Min = 3 und die dazugehörige Zeile: 3 7 6 7.
Re: Zeile in der sich ein Minimum befindet ausgeben lassen
Verfasst: Sonntag 29. Dezember 2013, 11:12
von BlackJack
@nadine_83: Wenn Du weisst wo es sich befindet, dann kannst Du doch den Zeilenindex berechnen. Numpy hat da eine Funktion für `unravel_index()`:
Code: Alles auswählen
import numpy as np
def main():
data = np.array(
[
[4, 6, 7, 8],
[3, 7, 6, 7],
[5, 8, 6, 9],
]
)
print data[np.unravel_index(data.argmin(), data.shape)[0]]
if __name__ == '__main__':
main()
Re: Zeile in der sich ein Minimum befindet ausgeben lassen
Verfasst: Sonntag 29. Dezember 2013, 11:12
von anogayales
Hallo,
Geh einfach durch jede Zeile und merke dir das Minimum und den Index der entsprechenden Zeile. Danach vergleichst du die Minima jeder Zeile und gibst das Minima inklusiver der entsprechenden Zeile zurück.
@Blackjack: Gib doch keine Lösungen zu Aufgaben, die offentsichtlich nach Hausaufgaben aussehen.
Grüße,
anogayales
Re: Zeile in der sich ein Minimum befindet ausgeben lassen
Verfasst: Sonntag 29. Dezember 2013, 11:31
von BlackJack
@anogayales: Ich dachte mir hier das der Knackpunkt das finden von `unravel_index()` ist. Entweder man kennt das zufällig, oder man kommt darauf das es so etwas geben könnte und sucht danach und hat Glück und findet es. Sollte die Aufgabe sein sich den Algorithmus selber zu erarbeiten, dann war ich ja nicht besonders hilfreich.

Re: Zeile in der sich ein Minimum befindet ausgeben lassen
Verfasst: Sonntag 29. Dezember 2013, 13:17
von nadine_83
Ich danke euch. Der Tipp mit "unravel_index()" war genau das, was ich gesucht habe.
Re: Zeile in der sich ein Minimum befindet ausgeben lassen
Verfasst: Sonntag 29. Dezember 2013, 14:44
von Hyperion
anogayales hat geschrieben:
Geh einfach durch jede Zeile und merke dir das Minimum und den Index der entsprechenden Zeile. Danach vergleichst du die Minima jeder Zeile und gibst das Minima inklusiver der entsprechenden Zeile zurück.
Klingt ein wenig ineffizient. Man kann doch auch in einem Durchlauf das Minimum ermitteln...