2014-10-15 15 views
5

In Numpy ho provato quanto segue. Sospetto che questo non sia un bug. Se è una caratteristica, non la capisco. Qualcuno può spiegarlo? Grazie.Consistenza tipo Numpy (In)?

>>> np.array([173], dtype = np.uint8) * [360] 
array([62280]) 
>>> np.array([173], dtype = np.uint8) * 360 
array([-3256], dtype=int16) 
>>> 
+1

Numpy version ?? –

+0

Sto ottenendo 'array ([62280], dtype = uint16)' in entrambi i casi. Numpy 1.8.1 su Ubuntu. –

+1

Ottenere 'array ([62280], dtype = uint16)' in entrambi i casi, numpy 1.8.1 su Windows, Python 2.7.6 –

risposta

1

La differenza tra queste uscite è probabilmente causata da un bug nella versione numpy.

Il codice

np.array([173], dtype = np.uint8) * [360] 

è un'abbreviazione per:

np.array([173], dtype = np.uint8) * np.array([360]) 
# output array([62280]) 

E così [360] è trasformato in una matrice NumPy con dtype = int. La moltiplicazione prende la massima precisione e quindi restituisce un array con precisione int.