Используя приведенный ниже небольшой воспроизводимый пример, я создаю маску, которую затем хотел бы программно определить минимальные и максимальные индексы х и у, где маска ложна (т. Е. Где значения не маскируются). В этом и более широком примере «реального мира» маскированные значения всегда будут пространственно непрерывными - в маске нет «островков». Цель состоит в том, чтобы использовать программно определенные индексы для увеличения немаскированных значений с помощью imshow. Я пытаюсь изобразить то, что я пытаюсь сделать, на изображении в конце поста.
import numpy as np
import matplotlib.pyplot as plt
# Generate a large array
arr1 = np.random.rand(100,100)
# Generate a smaller array that will help
# set the mask used below
arr2 = np.random.rand(20,10) + 1
# Insert the smaller array into the larger
# array for demonstration purposes
arr1[60:80,10:20] = arr2
# boost a few values neighboring the inserted array for demonstration purposes
arr1[59,12] += 2
arr1[70:75,20] += 2
arr1[80,13:16] += 2
arr1[64:72,9] += 2
# For demonstration, plot arr1
fig, ax = plt.subplots(figsize=(20, 15))
im = ax.imshow(arr1)
plt.show()
# Generate a mask with an example condition
mask = arr1 < 1
Используя маску, как определить, какие значения x_min, x_max, y_min и & y_max в следующей строке кода должно быть
im = ax.imshow(arr1[y_min:y_max, x_min:x_max])
таким образом, чтобы изображение было увеличено до красной рамки на следующем рисунке? Пока у меня нет пересеченных проводов, я думаю, что ответ для этого небольшого примера будет y_min = 59, y_max = 80, x_min = 9, & x_max = 20