2014-01-21 2 views
2

При преобразовании np.array в uint8 с использованием astype тип элемента массива не изменяется.Почему astype (uint) на np.array не меняет тип элемента np.array?

>>> x = np.array([[1.0, 2.3], [1.3, 2.9]]) 
>>> x.astype(uint8) 
array([[1, 2], 
     [1, 2]], dtype=uint8) 
>>> type(x[0,0]) 
<type 'numpy.float64'> 

Почему элемент еще float64 и не uint8?

+0

По общему правилу: если метод возвращает что-то не изменяет оригинальный объект. Если он ничего не возвращает, он модифицирует исходный объект. Это почти всегда верно со встроенными объектами, стандартной библиотекой и большинством других библиотек. В вашем примере ясно, что 'astype' что-то возвращает. – Bakuriu

ответ

4

astype возвращает копию исходного массива.

Использование x = x.astype(uint8) вместо

0

astype возвращает копию массива, так что вы должны назначить его:

x = x.astype(uint8) 
Смежные вопросы