2015-09-18 8 views
5

Ich habe Schwierigkeiten zu verstehen, wie die Form des resultierenden Arrays nach dem Zerschneiden in numpy bestimmt wird. Zum Beispiel verwende ich den folgenden einfachen Code:Ermitteln der Form des Ergebnisarrays nach dem Schneiden in Numpy

import numpy as np 


array=np.arange(27).reshape(3,3,3) 

slice1 = array[:,1:2,1] 
slice2= array[:,1,1] 

print "Content in slice1 is ", slice1 
print "Shape of slice1 is ", slice1.shape 
print "Content in slice2 is ",slice2 
print "Shape of Slice2 is", slice2.shape 

Ausgabe dieser ist:

Content in slice1 is 
[[ 4] 
    [13] 
    [22]] 
Shape of slice1 is (3, 1) 
Content in slice2 is [ 4 13 22] 
Shape of Slice2 is (3,) 

In diesen beiden Fällen Inhalt ist gleich (wie es sein sollte). Aber sie unterscheiden sich in den Formen. Also, wie wird die resultierende Form durch numpy bestimmt?

+1

http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html – Kasramvd

+2

Grundsätzlich gilt: Schneiden verringert nicht die Anzahl der Dimensionen, aber die Indizierung mit einem Ganzzahl reduziert die Anzahl der Dimensionen jedes Mal um 1. –

+0

Es gibt ein "Form" -Attribut. Sehen Sie sich 'x .__ array_interface__' an, um es und andere Attribute zu sehen. – hpaulj

Antwort

5

Es läuft darauf hinaus grundsätzlich auf diese nach unten -

In [118]: a = np.array([1,2,3,4,5]) 

In [119]: a[1:2] 
Out[119]: array([2]) 

In [120]: a[1] 
Out[120]: 2 

Wenn Sie a[1:2] tun, werden Sie mit 1 Element für ein Array fragen.

Wenn Sie a[1] tun, fragen Sie nach dem Element bei diesem Index.


Ähnliches passiert in Ihrem Fall.

Wenn Sie tun - array[:,1:2,1] - bedeutet dies alle möglichen Indizes aus der ersten Dimension, eine Unterliste von Indizes aus der zweiten Dimension (obwohl die Unterliste nur ein Element enthält) und den ersten Index aus der dritten Dimension. So erhalten Sie ein Array von Arrays zurück -

[[ 4] 
    [13] 
    [22]] 

Wenn Sie das tun - array[:,1,1] - es bedeutet, dass alle möglichen Indizes aus der ersten Dimension, 1. Index aus der zweiten Dimension, und erste Index von dritten Dimension. So erhalten Sie einen Array zurück -

[4 13 22] 
Verwandte Themen