Ответ 1
одним из решений было бы:
a = numpy.array([1,2,3,4,5])
(a > 1).all() and (a < 5).all()
если вы хотите acutal массив правды vaues, просто используйте:
(a > 1) & (a < 5)
Мне было интересно, существует ли синтаксически простой способ проверки того, находится ли каждый элемент в массиве numpy между двумя числами.
Другими словами, так же, как numpy.array([1,2,3,4,5]) < 5
вернет array([True, True, True, True, False])
, мне было интересно, можно ли это сделать что-то похожее на это:
1 < numpy.array([1,2,3,4,5]) < 5
... чтобы получить...
array([False, True, True, True, False])
Я понимаю, что я могу получить это путем логической цепочки логических тестов, но я работаю через довольно сложный код, и я искал синтаксически чистое решение.
Какие-нибудь советы?
одним из решений было бы:
a = numpy.array([1,2,3,4,5])
(a > 1).all() and (a < 5).all()
если вы хотите acutal массив правды vaues, просто используйте:
(a > 1) & (a < 5)
Еще бы использовать numpy.any
, вот пример
import numpy as np
a = np.array([1,2,3,4,5])
np.any((a < 1)|(a > 5 ))
Вы также можете центрировать матрицу и использовать расстояние до 0
upper_limit = 5
lower_limit = 1
a = np.array([1,2,3,4,5])
your_mask = np.abs(a- 0.5*(upper_limit+lower_limit))<0.5*(upper_limit-lower_limit)
Следует иметь в виду, что сравнение будет симметричным с обеих сторон, поэтому оно может выполнять 1<x<5
или 1<=x<=5
, но не 1<=x<5