Проверьте, попадает ли числовой массив в границы - PullRequest
0 голосов
/ 29 августа 2018

В поисках более эффективного способа проверить, попадают ли элементы в массиве numy в какой-либо (или совпадают хотя бы один раз) из набора значений min и max. Я играл с any() и np.any() и all(), но для меня это более новые понятия.

y_minmax_bounds = [[1.1, 2.0], [3.3, 6.21], [5.75, 10.0]]
y = np.array([1.5, 2.5, 2, 6, 8, 10])
withinbounds = [((y > min) & (y < max))for min, max in y_minmax_bounds]
print(withinbounds)

Возвращает:

[array([True, False, False, False, False, False]), 
array([False, False, False,  True, False, False]), 
array([False, False, False,  True,  True, False])]

После решения массива:

[True False False True True False]

Я могу перебрать y_minmax_bounds, но это кажется неэффективным, учитывая очень большой массив np.ar для проверки. Актуальной проблемой будет также принудительное применение этого в нескольких измерениях (x_minmax_bounds по x, z_minmax_bounds по z).

1 Ответ

0 голосов
/ 29 августа 2018

с вещанием Numpy

mn, mx = np.array(y_minmax_bounds).T
x = y[:, None]

((x > mn) & (x < mx)).any(1)

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