Ищите более эффективный способ проверить, попадают ли элементы в массив numpy в любой (или не менее чем один раз) набор значений 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.array для проверки. Реальная проблема также будет применяться в нескольких измерениях (x_minmax_bounds
на x, z_minmax_bounds
по z).
С трансляцией 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])
y_minmax_bounds
, которая также устанавливает 2.5 и 2 как False.