"Могу ли я найти минимальное значение этой матрицы, чтобы она не лежала в заданном диапазоне аккуратно?"
Если вас интересует только минимальное значение, удовлетворяющее некоторому условию, а не местоположение, тогда
>>> numpy.random.seed(1)
>>> m = numpy.random.randn(5.,5.)
>>> m
array([[ 1.62434536, -0.61175641, -0.52817175, -1.07296862, 0.86540763],
[-2.3015387 , 1.74481176, -0.7612069 , 0.3190391 , -0.24937038],
[ 1.46210794, -2.06014071, -0.3224172 , -0.38405435, 1.13376944],
[-1.09989127, -0.17242821, -0.87785842, 0.04221375, 0.58281521],
[-1.10061918, 1.14472371, 0.90159072, 0.50249434, 0.90085595]])
>>> m[~ ((m < 0.5) | (m > 0.8))].min()
0.50249433890186823
Если вы хотите получить местоположение через argmin, то это немного сложнее, но один из способов - использовать маскированные массивы:
>>> numpy.ma.array(m,mask=((m<0.5) | (m > 0.8))).argmin()
23
>>> m.flat[23]
0.50249433890186823
Обратите внимание, что условие здесь перевернуто, поскольку маска имеет значение True для исключенных значений, а не включенных.
Обновление: кажется, что под «в пределах указанного диапазона» вы не подразумеваете, что минимальное значение не находится в определенных пределах, но вы хотите исключить части матрицы из поиска на основе координат x, y , Вот один из способов (та же матрица, что и раньше):
>>> xx, yy = numpy.indices(m.shape)
>>> points = ((xx == 0) & (yy == 0)) | ((xx > 2) & (yy < 3))
>>> points
array([[ True, False, False, False, False],
[False, False, False, False, False],
[False, False, False, False, False],
[ True, True, True, False, False],
[ True, True, True, False, False]], dtype=bool)
>>> m[points]
array([ 1.62434536, -1.09989127, -0.17242821, -0.87785842, -1.10061918,
1.14472371, 0.90159072])
>>> m[points].min()
-1.1006191772129212
с соответствующим вариантом маскированного массива, если вам нужны местоположения. [Отредактировано для использования индексов вместо mgrid; Я действительно забыл об этом, пока он не был использован в другом ответе сегодня!]
Если я все еще не прав: ^), и это тоже не то, что вам нужно, отредактируйте ваш вопрос, включив в него пример желаемого ввода и вывода 3x3.