2014-03-18 11 views

Antwort

9

Sie können Tupel-Entpacken verwenden.

y, x = a.shape 
+0

Danke. Googeln und nichts gründen! : D – pceccon

+1

'.shape' ist eine Eigenschaft eines numpy Arrays, keine Methode. – wflynny

+0

Hinweis: '.shape()' (mit Klammern) wurde anfänglich in der Frage selbst erwähnt, daher sieht es mehr nach Unaufmerksamkeit als nach logischem Fehler in der Antwort aus. – ffriend

4
height, width = a.shape 

Beachten Sie jedoch, daß ndarray hat Matrixkoordinaten (i,j), die Bildkoordinaten entgegengesetzt sind (x,y). Das heißt:

i, j = y, x # and not x, y 

Auch Python Tupeln Unterstützung Indizierung, so dass Sie diese separate Dimensionen wie zugreifen:

dims = a.shape 
height = dims[0] 
width = dims[1] 
2

ndarray.shape() ein TypeError: 'tuple' object is not callable. werfen, weil es keine Funktion, es ist ein Wert.

Was Sie tun möchten, ist nur Tupel entpacken .shape ohne (). Beispiel:

>> import numpy 
>> ndarray = numpy.ndarray((20, 21)) 
>> ndarray.shape 
(20, 21) 
>> x, y = ndarray.shape 
>> x 
20 
>> y 
21 

http://docs.scipy.org/doc/numpy/reference/generated/numpy.ndarray.shape.html

+0

In Ihrem zweiten Absatz haben Sie wahrscheinlich '.shape', nicht' .size' gemeint. '.size' enthält die Gesamtzahl der Elemente. – ffriend

+0

Ja, mein Fehler. – Ford

Verwandte Themen