Python:numpy数组大于和小于某个值

10

如何查找在范围内的数字?

c = array[2,3,4,5,6]
>>> c>3
>>> array([False, False, True, True, True]

然而,当我在两个数字之间给出c时,它会返回错误

>>> 2<c<5
>>> ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

期望的输出是

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

3个回答

18

试试这个,

(c > 2) & (c < 5)

结果

array([False,  True,  True, False, False], dtype=bool)

4

当Python评估2<c<5时,它会将其转换为(2<c) and (c<5),这个方法本来是有效的,但是在使用numpy数组时,and关键字无法按我们所需方式工作(它尝试将每个数组转换为单个布尔值,并且该行为无法被覆盖,如此处所述)。因此,在使用numpy数组进行矢量化and操作时,您需要执行以下操作:

(2<c) & (c<5)


1
你可以这样做:

你可以像这样:

import numpy as np
c = np.array([2,3,4,5,6])
output = [(i and j) for i, j in zip(c>2, c<5)]

输出:

[False, True, True, False, False]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接