/ / Bedeutung der Rückkehr von np.shape () - Python, Numpy, Physik, Form

Bedeutung der Rückkehr von np.shape () - Python, numpy, Physik, Form

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.