Numpy Arrays - Замена элементов - PullRequest
0 голосов
/ 07 февраля 2019

Я новичок в numpy и хочу заменить специальные элементы в трехмерном массиве numpy.Мой трехмерный массив представляет изображение.Форма массива: (1080, 1920, 3).Число 3 представляет RGB каждого пикселя в изображении.

Все, что я хочу знать, - это как изменить все элементы, которые равны [0,0,0], на [255,255,255], что означает, что я хочу всечерные пиксели на изображении должны быть белыми .. Как я могу это сделать?Спасибо!

1 Ответ

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

Скажем, вы сохранили свой массив в data;это должно работать:

data[(data == 0).all(axis=2)] = [255, 255, 255]

Это связано с правилами вещания numpy, которые сравнивают каждое значение с 0, в результате чего получается логический массив со значениями True, где они сравниваются равными и Falseв другом месте.

Следующим шагом является использование только тех подмассивов, в которых все отдельные значения сравниваются одинаково, с .all(axis=2) - последней осью, которая вам нужна.

Тогдас помощью полученного логического массива вы можете индексировать обратно в data, что даст вам только те вложенные массивы, равные [0, 0, 0], и установить для них [255, 255, 255].

...