LINUX.ORG.RU

numpy поэлементное and для bool массивов


0

1

Есть массив, нужно выделить только те элементы, которые удовлетворяют сразу двум условиям, например, в массиве координат b, вторая координата меньше нуля и больше -2. По отдельности условия работают, а вместе не получается.

 b=array([[1,1],[1,-1],[1,-5]])
>>> b[:,1]<0 
array([False,  True,  True], dtype=bool)
>>> b[:,1]>-2 
array([ True,  True, False], dtype=bool)
>>> b[:,1]<0 and b[:,1]>-2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
Д.б. False, True, False.

быдлокод конечно но я вот попробовал, почему бы не получить тебе отдельно 2 результата и не сделать им __and__ ? главное же результат ;)

trashymichael ★★★
()

>>> (arr[:,1] < 0).__and__(arr[:,1] > -2)

numpy впервые вижу и вообще

trashymichael ★★★
()

Если на выходе нужен не массив булевских значений, а массив элементов из b удовлетворяющих условию, то нужно сменить map на filter.

Norgat ★★★★★
()
Ответ на: комментарий от Norgat

А, нет, лучше так не дулать. Способ с __and__ на порядок быстрее.

Norgat ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.