Ausfuehren eines Python Programms

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.
Lagrange
User
Beiträge: 9
Registriert: Mittwoch 29. Juli 2009, 15:43

Leonidas hat geschrieben:Naja, man muss es eben installieren. Das kann man entweder über das Paketmanagement machen (empfohlen) als auch "von Hand", was aber im Fall von Numpy etwas komplizierter sein könnte.
Ich glaube wirklich ich werde das zu Hause auf meinem Windows PC machen muessen. Ich habe hier an der Uni nur einen Shell ueber die ich Python steuern kann. Und ich schreibe meinen Code einfach in kwrite.
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

Eine Shell ist wunderbar geeignet, um GNU/Linux-Systeme zu verwalten. Mit root-Rechten sollte ein

Code: Alles auswählen

yum install python-numpy
ausreichen. Aber das ist ziemlich off-topic für dieses Forum, frag im Zweifelsfall nochmal deinen Admin.
Lagrange
User
Beiträge: 9
Registriert: Mittwoch 29. Juli 2009, 15:43

Ok - Ich bin wieder ein Schritt weiter. numpy laeuft jetzt :). Und es sieht auch so aus, als wueder das Programm starten, leider bricht es mit einer Fehlermeldung ab, mit der ich beim besten Willen nix anfangen kann :(:

Traceback (most recent call last):
File "hello.py", line 79, in ?
PairCorrelationFunction_2D(x,y,S,rMax,dr)
File "hello.py", line 35, in PairCorrelationFunction_2D
interior_indices, = where(bools1*bools2*bools3*bools4)
ValueError: need more than 0 values to unpack


Jetzt habe ich versucht ueber "help(numpy.where)" mir mal anzuschauen, was diese Funktion ueberhaupt macht. Leider werde ich da nicht schlau draus. Auch das Komma nach dem "interior_indices" sieht irgendwie komisch aus.


EDIT:
So ich habe jetzt das Komma einfach mal weggemacht und dann kommt er auf jeden Fall schon mal weiter. Allerdings nicht viel. Ich glaube ich habe auch den Fehler schon gefunden:

Code: Alles auswählen

    bools1 = x>1.1*rMax
    bools2 = x<(S-1.1*rMax)
    bools3 = y>rMax*1.1
    bools4 = y<(S-rMax*1.1)
    
   
    interior_indices = where(bools1*bools2*bools3*bools4)

x und y sind Vektoren und wenn ich das hier richtig verstanden habe, sollen die Eintraege verglichen werden. Und dann jeweils ein "True" oder ein "False" zurueckgegeben werden. Leider macht Python das nur fuer den ersten Eintrag von x bzw y, d.h. bools1 bis bools4 sind keine arrays, obwohl sie das sollten
Zuletzt geändert von Lagrange am Freitag 31. Juli 2009, 15:10, insgesamt 1-mal geändert.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Die Fehlermeldung sagt, dass "where" ein leeres Tupel zurück liefert. Das Komma macht übrigens Sinn:

Code: Alles auswählen

test = tuple([42])
print test

test, = tuple([42])
print test
Code zu den Fehlermeldungen ist übrigens sehr sinnvoll.
Das Leben ist wie ein Tennisball.
Lagrange
User
Beiträge: 9
Registriert: Mittwoch 29. Juli 2009, 15:43

ah ok, danke!

dann liegt der Fehler wohl bei

Code: Alles auswählen

    bools1 = x>1.1*rMax
    bools2 = x<(S-1.1*rMax)
    bools3 = y>rMax*1.1
    bools4 = y<(S-rMax*1.1)
weil da nicht jeder Eintrag von x bzw y einzeln betrachtet wird. Also bools1 bis bools4 selbst keine Vektoren sind
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Mach einmal aus x und y Numpy-Arrays statt Listen.
MfG
HWK
Antworten