Как получить верхнюю левую и нижнюю правую координаты поля вокруг определенного значения в матрице с использованием Python?

1

У меня есть двумерный массив numpy. Рассмотрим следующий пример

    [[0,6,89,255,1,6,7]
    [0,255,89,255,1,1,7]
    [255,255,255,255,255,255,255]
    [1,2,3,4,5,6,7]
    [1,1,255,5,7,3,255]]

Нам нужны координаты прямоугольника вокруг определенного значения. Например, для значения 255 координаты поля вокруг значения 255 будут в верхнем левом углу (0,0) и в правом нижнем углу (4,6).

Как сделать это эффективно в python.

Большое спасибо.

  • 1
    Разве вы не имеете в виду верхний левый (0, 0)? Кажется, 255 - сбивающий с толку пример, поскольку размер блока равен размеру всей матрицы. Вы имеете в виду, что поле около 3 должно быть вверху слева (3, 2) и справа внизу (4, 5)?
  • 0
    @lazyr Да, ты прав ... Это моя ошибка ... Я исправлю вопрос ... Спасибо
Теги:
numpy

1 ответ

4
Лучший ответ

Ответ очень похож на: есть ли функция "ограничивающей рамки" (срез с ненулевыми значениями) для ndarray в NumPy?

from numpy import array, argwhere

A = array([[0  ,6  ,89 ,255,1  ,6  ,7  ],
           [0  ,255,89 ,255,1  ,1  ,7  ],
           [255,255,255,255,255,255,255],
           [1  ,2  ,3  ,4  ,5  ,6  ,7  ],
           [1  ,1  ,255,5  ,7  ,3  ,255]])

B = argwhere(A==255)
(ystart, xstart), (ystop, xstop) = B.min(0), B.max(0) 

Ещё вопросы

Сообщество Overcoder
Наверх
Меню