Проверьте, находятся ли элементы массива в пределах границ - PullRequest
1 голос
/ 13 марта 2020

У меня есть два массива. Один для нижних и верхних границ, и один для моих сигналов, которые я измерял. Теперь я хотел бы знать, находятся ли все мои сигналы в пределах нижней и верхней границ.

x = np.random.normal(size=(10,))    # here, 10 signals
b = np.random.normal(size=(10, 2))  # lower and upper bound for each signal

В настоящее время я делаю следующее, чтобы проверить, находятся ли мои сигналы в пределах их границ:

(b[:,0] < x) & (x < b[:,1])

Есть ли более быстрый способ добиться этого?

1 Ответ

2 голосов
/ 13 марта 2020

Ваша текущая скорость:

>>> a = lambda: (b[:,0] < x) & (x < b[:,1])
>>> timeit(a, number=100000)
0.40337433700000247

Если вы объявите b как:

b = np.random.normal(size=(2, 10))

Тогда вы сбрейте ~ 45%:

>>> q = lambda: (b[0] < x) & (x < b[1])
>>> timeit(q, number=100000)
0.22948266800000283
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...