У меня есть изображение RGB, которое представлено в виде массива numpy размера (500, 500, 3). У меня также есть массив размера (500, 500), где каждый пиксель имеет целочисленное значение от 0 до 99 включительно. Это в основном делит изображение на множество субрегионов. Пиксели, принадлежащие подмассиву, имеют один и тот же целочисленный индекс.
Я заинтересован в выполнении некоторых вычислений, таких как вычисление среднего значения и стандартного отклонения для каждого из этих подмножеств. Я могу сделать это, перебирая изображение следующим образом (например, для вычисления среднего значения):
# image is of size (500, 500, 3) ->RGB values
# label is of size (500, 500) -> contains integers
import numpy as np
mean = np.zeros((100, 3))
for i in range(0, 100):
count = 0
for x in range(0,500):
for y in range(0,500):
if label[x, y] == i:
mean[i, :] += image[x, y,:]
count = count + 1
# Compute the mean
if count > 0:
mean[i,:] /= count
То, как я это делаю, включает в себя множество циклов, и это кажется совершенно не питоническим, и мне было интересно, есть ли лучший (в смысле скорости) способ сделать это.