In numpy array
s bezieht sich die Dimensionalität auf die Anzahl der axes
zum Indizieren erforderlichen Dimensionen, nicht auf die Dimensionalität eines geometrischen Raums. Beispielsweise können Sie die Positionen von Punkten im 3D-Raum mit einem 2D-Array beschreiben:
array([[0, 0, 0],
[1, 2, 3],
[2, 2, 2],
[9, 9, 9]])
Welches hat shape
von (4, 3)
und Dimension 2
. Es kann jedoch den 3D-Raum beschreiben, da die Länge jeder Zeile ( axis
1) drei beträgt, sodass jede Zeile die x-, y- und z-Komponente der Position eines Punkts sein kann. Die Länge axis
0 gibt die Anzahl der Punkte an (hier 4). Dies ist jedoch eher eine Anwendung auf die Mathematik, die der Code beschreibt, als ein Attribut des Arrays selbst. In der Mathematik wäre die Dimension eines Vektors seine Länge (z. B. x-, y- und z-Komponenten eines 3d-Vektors), aber in numpy wird jeder "Vektor" wirklich nur als 1d-Array unterschiedlicher Länge betrachtet. Dem Array ist es egal, wie groß der beschriebene Raum (falls vorhanden) ist.
Sie können damit herumspielen und die Anzahl der Dimensionen und Formen eines Arrays wie folgt anzeigen:
In [262]: a = np.arange(9)
In [263]: a
Out[263]: array([0, 1, 2, 3, 4, 5, 6, 7, 8])
In [264]: a.ndim
Out[264]: 1
In [265]: a.shape
Out[265]: (9,)
In [266]: b = np.array([[0,0,0],[1,2,3],[2,2,2],[9,9,9]])
In [267]: b
Out[267]:
array([[0, 0, 0],
[1, 2, 3],
[2, 2, 2],
[9, 9, 9]])
In [268]: b.ndim
Out[268]: 2
In [269]: b.shape
Out[269]: (4, 3)
Arrays können viele Dimensionen haben, aber über zwei oder drei sind sie schwer zu visualisieren:
In [276]: c = np.random.rand(2,2,3,4)
In [277]: c
Out[277]:
array([[[[ 0.33018579, 0.98074944, 0.25744133, 0.62154557],
[ 0.70959511, 0.01784769, 0.01955593, 0.30062579],
[ 0.83634557, 0.94636324, 0.88823617, 0.8997527 ]],
[[ 0.4020885 , 0.94229555, 0.309992 , 0.7237458 ],
[ 0.45036185, 0.51943908, 0.23432001, 0.05226692],
[ 0.03170345, 0.91317231, 0.11720796, 0.31895275]]],
[[[ 0.47801989, 0.02922993, 0.12118226, 0.94488471],
[ 0.65439109, 0.77199972, 0.67024853, 0.27761443],
[ 0.31602327, 0.42678546, 0.98878701, 0.46164756]],
[[ 0.31585844, 0.80167337, 0.17401188, 0.61161196],
[ 0.74908902, 0.45300247, 0.68023488, 0.79672751],
[ 0.23597218, 0.78416727, 0.56036792, 0.55973686]]]])
In [278]: c.ndim
Out[278]: 4
In [279]: c.shape
Out[279]: (2, 2, 3, 4)