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.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.
Ausfuehren eines Python Programms
- 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
ausreichen. Aber das ist ziemlich off-topic für dieses Forum, frag im Zweifelsfall nochmal deinen Admin.
Code: Alles auswählen
yum install python-numpy
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:
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
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.
Die Fehlermeldung sagt, dass "where" ein leeres Tupel zurück liefert. Das Komma macht übrigens Sinn:
Code zu den Fehlermeldungen ist übrigens sehr sinnvoll.
Code: Alles auswählen
test = tuple([42])
print test
test, = tuple([42])
print test
Das Leben ist wie ein Tennisball.
ah ok, danke!
dann liegt der Fehler wohl bei
weil da nicht jeder Eintrag von x bzw y einzeln betrachtet wird. Also bools1 bis bools4 selbst keine Vektoren sind
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)