Numpy Python: Как изменить 2d элементы массива в зависимости от условия? - PullRequest
0 голосов
/ 06 апреля 2020

У меня есть numpy 2D массив, представляющий некоторые координаты x, y. Учитывая контрольную точку [a, b] и расстояние 'c', я хочу заменить элементы в моем 2D-массиве так, чтобы все точки, чье расстояние от [a, b]> c было установлено на [0 , 0] и те, у которых расстояние меньше c, установлены на [1,1]. Я пытался использовать where () во многих вариантах, но безуспешно.

Пример ввода:

arr2D = np.array([[10,20],[30,40],[50,60]])
refPoint = np.array([29,41])
c = 5

Вывод должен быть: [[0,0],[1,1],[0,0]]

Любая помощь приветствуется ...

1 Ответ

0 голосов
/ 06 апреля 2020
np.array([[int(np.linalg.norm(a - refPoint, 2) < c)]*len(refPoint) for a in arr2D])

Это дает именно тот формат, который вы ищете, хотя "* len (refPoint)" кажется немного избыточным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...