How to use numpy.where with logical operators

后端 未结 1 1103
清歌不尽
清歌不尽 2020-12-13 17:46

I\'m trying to find the indices of all elements in an array that are greater than a but less than b. It\'s probably just a problem with my syntax but this doesn\'t work:

相关标签:
1条回答
  • 2020-12-13 18:23

    Here are two ways:

    In [1]: my_array = arange(10)
    
    In [2]: where((my_array > 3) & (my_array < 7))
    Out[2]: (array([4, 5, 6]),)
    
    In [3]: where(logical_and(my_array > 3, my_array < 7))
    Out[3]: (array([4, 5, 6]),)
    

    For the first (replacing and with &), be careful to add parentheses appropriately: & has higher precedence than the comparison operators. You can also use *, but I wouldn't recommend it: it's hacky and doesn't make for readable code.

    In [4]: where((my_array > 3) * (my_array < 7))
    Out[4]: (array([4, 5, 6]),)
    
    0 讨论(0)
提交回复
热议问题