Leeres Numpy-Array

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
tv-verrückter
User
Beiträge: 7
Registriert: Freitag 4. Mai 2012, 23:09

Hallo Zusammen,

ich beschäftige mich seit einigen Tagen mit Numpy. Ich lese eine CSV-Datei aus und speichere diese in ein Numpy-Array. Soweit funktioniert alles. In dem Array sind X,Y und Z Koordinaten. Ziel ist es, die Zeile zu erhalten, die den geringsten X-Wert enthält. Folgendes funktioniert auch:

Code: Alles auswählen

print(self.map)
self.Xmin = self.map[:,0].min(axis=0)
print("Wurzelstart bei {}".format(self.Xmin))
[[ 12.512 7.012 55.512]
[ 12.522 7.1 55.512]
[ 12.6 7.123 55.598]
[ 77. 7.123 55.598]
[ 12.683 7.123 55.598]]
Wurzelstart bei 12.512
soweit so gut. Doch folgendes funktioniert komischerweise nicht:

Code: Alles auswählen

self.root = np.where(self.map[:,0] == self.Xmin)
denn ich erhalte nur ein leeres Array:
(array([0], dtype=int64),)
kann mir jemand einen Tipp geben wo der Fehler steckt?
Vielen Dank vorab :)
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

@tv-verrückter: Du erhältst kein Leeres Array sondern ein Array mit dem Wert 0, was der Zeile entspricht, wo der minimale Wert auftritt. Wobei das mit argmin viel einfacher geht:

Code: Alles auswählen

root = np.argmin(map[:,0])
Warum packst Du alles in self? Ist das wirklich nötig?
tv-verrückter
User
Beiträge: 7
Registriert: Freitag 4. Mai 2012, 23:09

Hallo Sirius3, vielen vielen Dank :) Ich hab den ganzen Tag wie wild gesucht und dann war die Lösung doch so einfach :) Ich habe vor ein paar Tagen ein ähnliches Skript erstellt und da hatte es funktioniert... erst durch deinen Tipp kam ich drauf dass im Aufruf der Funktion im alten Python-Skript ein map[self.root] stand... da war ich etwas blind^^
Ich habe mehrere Methoden/Funktionen, die in einer Schleife durchlaufen werden. Deswegen habe ich das ganze in eine Klasse gesteckt. Eine andere Möglichkeit wäre vielleicht noch die Definition als globale Variable gewesen.

Beste Grüße :)
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

@tv-verrückter: Variablen, mit denen man arbeitet werden als Argumente Funktionen übergeben.
tv-verrückter
User
Beiträge: 7
Registriert: Freitag 4. Mai 2012, 23:09

Danke für den Hinweis! Ich hab das Programm nun etwas umgebaut und konnte dadurch alles über den Funktionsaufruf lösen :) Es funktioniert :)
Antworten