Вы можете использовать функцию numpy .astype (), чтобы изменить тип данных. Вот пример:
>>> arr = np.array([10., 20., 30., 40., 50.])
>>> print(arr)
[10. 20. 30. 40. 50.]
>>> print(arr.dtype)
float64
>>> arr = arr.astype('uint16')
>>> print(arr)
[10 20 30 40 50]
>>> print(arr.dtype)
uint16
Чтобы ответить на ваши дальнейшие вопросы, вы хотите нормализовать свои данные при преобразовании float64 в uint8 или uint16. В основном вы хотите сопоставить диапазон данных [min, max] вашего массива с [0, 255] для uint8 или [0, 65535] для uint16. Вы все равно потеряете информацию, но нормализация минимизирует потерю данных.
Вот как вы можете сопоставить float64 с uint8:
dmin = np.min(arr)
dmax = np.max(arr)
drange = dmax-dmin
dscale = 255.0/drange
new_arr = (arr-dmin)*dscale
new_arr_uint8 = new_arr.astype('uint8')
загруженный массив.