Что такое числовой эквивалент «2 <a <5», где «a» - это числовой массив? - PullRequest
0 голосов
/ 07 ноября 2019

Этот вопрос не является дубликатом из другой вопрос . Другой вопрос касается одного логического вывода (True/False), когда условный оператор применяется к массиву Numpy. Вот почему важно использовать np.any() или np.all() для однозначного определения выходных данных.

Мой вопрос здесь говорит о создании поэлементного массива-вывода из логических True/False значений, когда мы оцениваем, находится ли массив a между 2 и 5, используя выражение 2 < a < 5,Этот вопрос касается жизнеспособности такого удобного выражения при использовании массивов numpy.

Python допускает следующее для скаляра.

a = 7
print(2 < a < 5) # False
a = 4
print(2 < a < 5) # True

Однако, если я попытаюсь сделать то же самое с пустым массивом, он не будет работать.

import numpy as np

a = np.arange(10)
2 < a < 5

Это дает ошибку . Но, любой из следующих двух методов работает (как и ожидалось):

np.logical_and(2 < a, a < 5) # method-1

(2 < a) & (a < 5) # method-2

Вывод :

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

Итак, мой вопрос: есть ли какой-нибудь тупойэквивалентный такой, что вы могли бы просто написать 2 < a < 5 и получить приведенный выше вывод?

1 Ответ

2 голосов
/ 07 ноября 2019

Как насчет этого?

import numpy as np
a = np.arange(10)

bools = map(lambda x: 2 < x < 5, a)
bools = np.fromiter(bools, bool)

suba = a[bools]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...