Я считаю, что метод astype() массивов numpy не очень эффективен. У меня есть массив, содержащий 3 миллиона очков Uint8. Умножение на матрицу 3x3 занимает 2 секунды, но преобразование результата из uint16 в uint8 занимает вторую секунду.
Точнее:
print time.clock()
imgarray = np.dot(imgarray, M)/255
print time.clock()
imgarray = imgarray.clip(0, 255)
print time.clock()
imgarray = imgarray.astype('B')
print time.clock()
dot product и масштабирование занимает 2 сек
отсечение занимает 200 мс
преобразование типа занимает 1 секунду
Учитывая время, затраченное на другие операции, я ожидаю, что astype
будет быстрее.
Есть ли более быстрый способ сделать преобразование типов, или я ошибаюсь, если для этого преобразования типов не должно быть так сложно?
Изменить: цель состоит в том, чтобы сохранить окончательный 8-битный массив в файл