Вы можете использовать маскированный массив, чтобы делать то, что вы хотите.
С:
import numpy as np
valuearr = np.array([[10,11,12,13],
[21,22,23,24],
[31,32,33,34],
[41,42,43,44]])
zonearr = np.array([ [0,0,1,1],
[0,0,1,1],
[3,3,0,0],
[3,3,0,0]], dtype=np.int)
Сначала замаскируйте все значения, где zonearr
не равно 3:
masked = np.ma.masked_array(valuearr, mask = (zonearr!=3))
Затем найдите положение максимального значенияс помощью argmax
:
idx_1d = np.argmax(masked)
Наконец, преобразуйте его в двумерный индекс:
idx_2d = np.unravel_index(idx_1d, valuearr.shape)
и напечатайте:
print(idx_2d, valuearr[idx_2d])
, что дает:
(3, 1) 42