2016-06-12 13 views
1

Ich hatte Folgendes erwartet, um ein neues numpy-Array aus der Form eines vorhandenen Arrays mit geändertem Element-Datentyp zu erstellen. Mein Original-Array ist ein Bild mit 8bit RGB-Pixeln. Ich möchte ein neues Array mit derselben Form aber mit Uint16-Datentyp erstellen. Der Zweck besteht dann darin, das Bild in 16-Bit-Pixel umzuwandeln und einige Berechnungen durchzuführen. Zu meiner Überraschung funktionierte das Folgende nicht.Erstellen eines neuen numpy-Arrays mit geändertem Element-Datentyp

>>> import scipy.misc  as msc 
>>> import numpy    as np 
>>> img_rgb = msc.imread('Jupiter_20160417_53.png') 
>>> img_rgb.dtype 
dtype('uint8') 
>>> img_rgb.shape 
(480, 640, 3) 
>>> new= np.zeros(img_rgb.shape,dtype=uint16) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
NameError: name 'uint16' is not defined 

Was habe ich vermisst?

Danke, Gert

+0

>>> a = np.zeros ((3,3), dtype = np.uint16) funktioniert für mich (Import numpy als np natürlich) –

Antwort

1

Die np.:

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

'uint16' (die Zeichenkette) würde auch gearbeitet haben.

int und float sind Python-Namen; fast alle anderen dtypes sind numpy spezifisch, und erfordern entweder den np. Namespace oder einen String-Namen (der numpy versteht). Der Fehler NameError: name 'uint16' is not defined bedeutet, dass uint16 keine Variable im Hauptnamespace ist. Mit anderen Worten, es ist keine eingebaute Variable (oder Funktion) und wurde nicht als solche importiert. Es ist Teil des numpy Namespace, den Sie eine np importiert haben.

z.B.

In [8]: z 
... 
NameError: name 'z' is not defined 
+0

Danke hpaulj. Das 'np.' Präfix funktionierte. Was ist der bessere Codestil? np.zeros ((3,4), dtype = 'uint16') oder np.zeros ((3,4), dtype = np.uint16)? –

+0

Ich glaube nicht, dass es wichtig ist. Mehr Details hier: http://docs.scipy.org/doc/numpy-1.10.0/reference/arrays.scalars.html – hpaulj

Verwandte Themen