Я думаю, что вы ищете это:
#!/usr/bin/env python3
import numpy as np
# Make mask of first 4 diagonal elements
h, w = 6, 10
mask = np.zeros((h,w),dtype=np.uint8)
mask[0][0] = 1
mask[1][1] = 1
mask[2][2] = 1
mask[3][3] = 1
# Make image of random small numbers under 10 that Mark is capable of adding up
# Go for predictable randomness because Mark is not a physicist
np.random.seed(42)
im = np.random.randint(1,10,(h,w),dtype=np.uint8)
# Calculate mean of numbers where mask>0
mean = im[mask>0].mean()
Вот как выглядит маска:
array([[1, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 1, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 1, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 1, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], dtype=uint8)
Вот как выглядит изображение:
![enter image description here](https://i.stack.imgur.com/8anQt.png)
Вот среднее значение:
In [33]: mean
Out[33]: 5.75
Проверка :
(7 + 5 + 3 + 8) /4 = 23/4 = 5.75