Ich habe ein Programm in numpy utf8, das mir erlaubtum die Koordinaten eines parabolischen Schusses vom Boden aus zu berechnen. Ich muss eine Funktion erstellen, die die Koordinaten zurückgibt (# 1), die verschiedenen Werte-Arrays erstellen, um damit zu arbeiten (# 2), und schließlich die Funktion verwenden, um die verschiedenen Koordinaten für jedes Wertepaket zu erzeugen
#1
def coordenadas(v,a,t,g=9.81):
rad=deg2rad(a)
x=v*cos(a)*t
y=v*sin(a)*t-(1./2.)*g*(t**2)
xy=array([x,y]).T
return xy
#2
v=arange(50,100,10) #m/s
adegree=arange(45,90,5) #degrees
a=deg2rad(adegree) #rads
t=linspace(0,10,50) #segundos
#3
v.shape=(5,1,1)
a.shape=(1,9,1)
t.shape=(1,1,50)
#5
XY=coordenadas(v,a,t,g=9.81)
print shape(XY)
print XY
#4
Meine Frage ist, dass die Form (XY) zurückkehrt
(50L, 9L, 5L, 2L)
Und XY (nur ein bisschen ist zu lang)
[[[[ 0. 0. ]
[ 0. 0. ]
[ 0. 0. ]
[ 0. 0. ]
[ 0. 0. ]]
Und noch mehr Boxen dieser Form
Was bedeutet das wirklich (große Kästen, Kästen, kleine Kästen, Reihen, Spalten)?
Antworten:
2 für die Antwort № 1(50L, 9L, 5L, 2L)
bedeutet a 4D
Array.
Sie können als visualisieren 50x9
Matrix und jede Zelle dieser Matrix enthält a 5x2
Matrix
0 für die Antwort № 2
Numpy-Arrays sind im Wesentlichen Matrizen, wobei jedes Feld [] den Beginn einer neuen Dimension darstellt. Als einfaches Beispiel die Matrix
11
23
könnte in numpy geschrieben werden als:
a = numpy.array([[1,1],[2,3]])
das würde dann als gedruckt werden
array([[1, 1],
[2, 3]])
Da es sich um eine zweidimensionale Matrix handelt, markiert das äußere "Kästchen" die Ränder der Matrix, während die inneren Kästchen die Reihen der Matrix mit der sind ,
Trennen Sie die Einträge. Berufung a.shape
ohne Argument gibt die Form der 2x2-Matrix an:
(2, 2)
Anrufen der shape
Die Methode mit Argument formt die Matrix um, die der im Argument definierten Form zugewiesen wurde. Um Ihnen jedoch weiter mit dem Code zu helfen:
Ihre Funktionsdefinition scheint völlig in Ordnung zu sein, es sei denn, ich sehe keinen Grund, warum Sie x und y in ein Array exportieren, anstatt nur zwei verschiedene Werte zurückzugeben.
2
Die Initialisierung Ihrer Arrays scheint ebenfalls in Ordnung zu sein.
3
Es gibt absolut keinen Grund, die Arrays, die Sie gerade erstellt haben, umzugestalten. Lassen Sie sie einfach so, wie sie sind.
4
Sie müssen die Funktion mit jedem Wertesatz separat aufrufen, um die Koordinaten zu erstellen. Verwenden Sie dazu eine Iteration für die soeben erstellten Arrays.