2014-01-30 14 views
6
h = numpy.zeros((2,2,2)) 

Was ist die letzten 2? Erstellt es ein mehrdimensionales Array oder etwas?Füllen Array mit Nullen in numpy

Ausgang:

array([[[ 0., 0.], 
    [ 0., 0.]], 
    [[ 0., 0.], 
    [ 0., 0.]]]) 

Wenn Anzahl der Kopien schafft, dann, was geschieht, wenn ich den folgenden?

h = numpy.zeros((2,2,1)) 

Ausgang:

array([[[ 0.], 
    [ 0.]], 
    [[ 0.], 
    [ 0.]]]) 

Ich verstehe, dass es durch Nullen gefüllt wird immer, und die ersten beiden Werte die Zeile und Spalte angeben, was ist mit dem dritten? Vielen Dank im Voraus. Und ich habe Google ausprobiert, aber ich konnte meine Fragen nicht formulieren.

+0

http://docs.scipy.org/doc/numpy/reference/generated/numpy.zeros.html – devnull

+0

Ihre Form hat 3 Dimensionen, Sie haben also ein dreidimensionales Array. Welcher Teil ist unklar? – geoffspear

+0

Warum der Downvote zu meiner allerersten Frage auf dieser Website. Über den Link gibt es nichts über den dritten Teil. – tilaprimera

Antwort

8

durch drei Argumente geben Sie eine dreidimensionale Array erstellen möchten:

numpy.array((2,2,2)) Ergebnisse in einer Reihe von Größe 2x2x2:

0---0 
/ /| 
0---0 0 
| |/ 
0---0 

numpy.array((2,2,1)) Ergebnisse in einer Reihe von Größe 2x2x1:

0---0 
| | 
0---0 

numpy.array((2,1,2)) Ergebnis s in einem Array der Größe 2x2x1:

0---0 
//
0---0 

numpy.array((1,2,2)) Ergebnisse in einem Array der Größe 2x2x1:

0 
/| 
0 0 
|/ 
0 

in diesen Darstellungen die Matrix "wie numpy.array((2,2)) aussehen könnte" (ein 2x2-Array) jedoch die darunter liegende Struktur ist immer noch dreidimensional.

+0

Die Klammern sind völlig verwirrend, wünschte, sie könnten als 3D-Matrix drucken. Danke noch einmal. – tilaprimera

+0

Ich wünschte, ich könnte +2 das, denn das macht es sehr deutlich für Leute, die nur Matrizen in 2D gesehen haben und nichts über höhere Dimensionen (Tensoren etc.) Wissen, besonders um den Unterschied zwischen (2,2,1) vs (2 , 1,2) vs (1,2,2) – usethedeathstar

+0

Es ist nicht wie ich Matrizen in 3D nicht gesehen habe. Ich habe Numpy nicht benutzt und kenne mich mit der Druckausgabe nicht aus. Und ja, der Unterschied zwischen (2,1,2) und (2,2,1) ist ziemlich deutlich durch die Visualisierungen von @Nils Werner. Ich frage mich jedoch die Anwendungen der drei verschiedenen Formen (2,1,2) und der (2,2,1) -Typ. – tilaprimera

1

Das Argument wird die Angabe des shape of the array:

In [72]: import numpy as np 

In [73]: h = np.zeros((2,2,2)) 

In [74]: h.shape 
Out[74]: (2, 2, 2) 

In [75]: h = np.zeros((2,2,1)) 

In [76]: h.shape 
Out[76]: (2, 2, 1) 

Wenn die Form eines Arrays (a,b,c) ist, dann hat es in NumPy parlance 3 "Achsen" (oder gemeinsam Englisch, 3 "Dimensionen"). Achse 0 hat die Länge a, Achse 1 hat die Länge b und Achse 2 hat die Länge c.


Wenn Sie h = np.zeros((2,2,1)) Mitteilung definieren, dass das Ergebnis 3 Klammerebenen hat:

In [77]: h 
Out[77]: 
array([[[ 0.], 
     [ 0.]], 

     [[ 0.], 
     [ 0.]]]) 

Die äußerste Klammer enthält 2 Elemente, die mittleren Klammern enthalten auch 2 Stück je. Die innerste Klammer enthält nur ein einzelnes Element. Somit ist die Form (2, 2, 1).

+0

Vielen Dank für die Visualisierung, an die ich nicht denken konnte. – tilaprimera

3

Lesen (4,3,2) als: Es gibt ein Gebäude mit 4 Etagen, jede Etage hat 3 Zeilen und 2 Spalten von Räumen. Daher ist es ein 3-D-Array.

In [4]: np.zeros((4, 3, 2))                  
Out[4]: 
array([[[ 0., 0.],                    
     [ 0., 0.],                    
     [ 0., 0.]],                    

     [[ 0., 0.],                    
     [ 0., 0.],                    
     [ 0., 0.]],                    

     [[ 0., 0.],                    
     [ 0., 0.],                    
     [ 0., 0.]],                    

     [[ 0., 0.],                    
     [ 0., 0.],                    
     [ 0., 0.]]])  
+0

Dies ist auch eine ziemlich gute Visualisierung. Vielen Dank – tilaprimera