Как обойти двумерный массив, попутно заменяя в нём элементы? Имеется матрица 800*600, нужно пройти по ней циклом и применить к каждому элементу этой матрицы преобразование формулой. Допустим, циклом я прошелся:for row in img: for x in row: x = (x - min_br) * (255 / (max_br - min_br)) # на новый х не заменяется А вот применить преобразование не получается. То есть для того чтобы каждый элемент x заменялся на тот, что в формуле, нужно проделывать дополнительные операции:img_contrast = np.empty(0) for row in img: for x in row: x = (x - min_br) * (255 / (max_br - min_br)) img_contrast = np.append(img_contrast, x) img_contrast = np.reshape(img_contrast, (800, 600)) Все эти reshape требуют дополнительного времени, и вроде всё работает, но гораздо медленнее, чем хотелось бы. Так как можно пройтись циклом по двумерному массиву, применяя формулку к каждому элементу?
Вы можете использовать индексы элементов во вложенном цикле, чтобы обойти двумерный массив и заменить элементы в нем. Вот пример кода:
import numpy as np # создание матрицы 800*600 для примера img = np.random.randint(0, 255, size=(800, 600)) min_br = np.min(img) max_br = np.max(img) for i in range(img.shape[0]): for j in range(img.shape[1]): img[i, j] = (img[i, j] - min_br) * (255 / (max_br - min_br)) print(img)
Этот код будет проходить по каждому элементу двумерного массива img, применяя преобразование к каждому элементу без использования дополнительных операций для изменения формы массива.
Вы можете использовать индексы элементов во вложенном цикле, чтобы обойти двумерный массив и заменить элементы в нем. Вот пример кода:
import numpy as np# создание матрицы 800*600 для примера
img = np.random.randint(0, 255, size=(800, 600))
min_br = np.min(img)
max_br = np.max(img)
for i in range(img.shape[0]):
for j in range(img.shape[1]):
img[i, j] = (img[i, j] - min_br) * (255 / (max_br - min_br))
print(img)
Этот код будет проходить по каждому элементу двумерного массива img, применяя преобразование к каждому элементу без использования дополнительных операций для изменения формы массива.