Zeile in der sich ein Minimum befindet ausgeben lassen

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.
Antworten
nadine_83
User
Beiträge: 12
Registriert: Donnerstag 10. Oktober 2013, 15:27

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.
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()
anogayales
User
Beiträge: 456
Registriert: Mittwoch 15. April 2009, 14:11

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
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. :-)
nadine_83
User
Beiträge: 12
Registriert: Donnerstag 10. Oktober 2013, 15:27

Ich danke euch. Der Tipp mit "unravel_index()" war genau das, was ich gesucht habe.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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...
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Antworten