测试numpy数组中的每个元素是否位于两个值之间的简单方法?

blz*_*blz 40 python numpy

我想知道是否有一种语法上简单的方法来检查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])

我理解我可以通过布尔测试的逻辑链接来获得这个,但我正在研究一些相当复杂的代码,我正在寻找一个语法上干净的解决方案.

有小费吗?

mat*_*ata 58

一个解决方案是:

a = numpy.array([1,2,3,4,5])
(a > 1).all() and (a < 5).all()
Run Code Online (Sandbox Code Playgroud)

如果你想要真正的vaues的真实数组,只需使用:

(a > 1) & (a < 5)
Run Code Online (Sandbox Code Playgroud)

  • “纯numpy”是什么意思?numpy 会覆盖所有运算符(`&gt;` (`__gt__`)、`&lt;` (`__lt__`) 和 &amp; (`__and__`))以高效工作,纯 Python 中实际上没有做任何事情(除了 `and` )第一个示例中的两个布尔值)。 (2认同)

sus*_*mit 8

另一种是使用numpy.any,这是一个例子

import numpy as np
a = np.array([1,2,3,4,5])
np.any((a < 1)|(a > 5 ))
Run Code Online (Sandbox Code Playgroud)