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.
Zeile in der sich ein Minimum befindet ausgeben lassen
-
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
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. 
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Klingt ein wenig ineffizient. Man kann doch auch in einem Durchlauf das Minimum ermitteln...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.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
