как определить, находится ли точка в непрямоугольной области в 2D массиве numpy?

#python #numpy

#python #numpy

Вопрос:

У меня есть 2D массив. Предположим, что у него есть некоторая связанная область, которая не является прямоугольной. Рассмотрим следующий пример

  array([[1, 1, 2, 2],
        [0, 1, 0, 1],
        [3, 0, 1, 4],
        [0, 3, 1, 1]])
  

В приведенном выше массиве все они связаны. Я знаю все эти координаты, которые хранятся, скажем, в виде 2d массива numpy или списка элементов (x, y).

Теперь я хочу запросить, находится ли произвольная точка в этой области. Точка также может быть плавающей.

В случае координат с плавающей точкой значения будут округлены до ближайшего целого значения пикселя.

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

Комментарии:

1. Итак, у вас есть координата, и вы хотите знать, есть ли она в списке координат? Для тестирования членства я бы использовал вместо этого set .

Ответ №1:

 areas = array([[1, 1, 2, 2],
        [0, 1, 0, 1],
        [3, 0, 1, 4],
        [0, 3, 1, 1]])

def is_in_area(x,y, area_num):
    return areas[round(x), round(y)] == area_num
  

Это то, к чему вы стремитесь?

Конечно, вам может потребоваться проверка некоторых границ.

Комментарии:

1. классный чувак, это именно то, что я собирался сделать… Я просто думал по-другому. Решение было настолько простым. Большое вам спасибо.