Удаление numy subarray на основе первого элемента в subarray - PullRequest
0 голосов
/ 07 сентября 2018

У меня есть массив numpy, сгенерированный из функции следующим образом

 circles = [[ 56, 152, 26],
 [288, 300, 25],
 [288, 362,  25],
 [288, 238,  24],
 [318, 298,  45],
 [220, 366, 29]]

Я хочу проверить, все ли значения в первом элементе каждого подмассива являются согласованными (математически близкими, не различающимися на большую величину, т.е.> 5), и удалить подмассивы, которые не соответствуют этому условию. Поэтому в этом случае я хочу удалить любой подмассив, который больше 288 + 5 или меньше 288 - 5. Есть мысли?

1 Ответ

0 голосов
/ 07 сентября 2018

Возможное решение с использованием mode:

>>> from scipy.stats import mode
>>> eps = 5
>>> most_freq = mode(circles[:, 0])[0][0]
>>> mask = np.abs(circles[:, 0] - most_freq) <= eps
>>> circles[mask]
array([[288, 300,  25],
   [288, 362,  25],
   [288, 238,  24]])

Edit: если ваш массив circles ограничен неотрицательными целыми числами, вы можете использовать следующее выражение для most_freq:

most_freq = np.bincount(circles[:, 0]).argmax()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...