Numpy 3d arrays - переключение с цикла for на метод numpy - PullRequest
0 голосов
/ 08 февраля 2019

У меня есть два трехмерных массива, которые представляют два изображения.Форма каждого массива (1080, 1920, 3).Число 3 представляет значение RGB каждого пикселя в изображении.

Приведенный ниже код заменяет каждый не черный пиксель в первом массиве на значение «параллельного» пикселя (в том же индексе) изДругой массив .:

        def replace_nonblack_pixels(first_array, second_array):
            mask = first_array.sum(axis=2) < BLACK_THRESHOLD # = 0.01
            for i in xrange(first_array.shape[2]):
                first_array[:, :, i] = (first_array[:, :, i] * mask) + ((1 mask) * second_array[:, :, i])

Дело в том, что я хочу ускорить код, используя только простые методы, а не циклы Python for.Кто-то сказал мне использовать numpy.ma, но я ничего об этом не знаю.

Жду ваших ответов, спасибо!

1 Ответ

0 голосов
/ 08 февраля 2019

Как насчет

m = np.where(mask)
first_array[m[0],m[1],:] = second_array[m[0],m[1],:]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...