多个条件np.extract

时间:2018-05-30 09:51:05

标签: python numpy

我有一个数组,希望不提取特定范围内的所有条目

x = np.array([1,2,3,4])
condition = x<=4 and x>1
x_sel = np.extract(condition,x)

但这不起作用。我正在

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

如果我在没有并且只检查一个条件的情况下做同样的事情

x = np.array([1,2,3,4])
condition = x<=4 
x_sel = np.extract(condition,x)
一切正常...... 对于courese,我可以在一个条件下应用该过程两次,但是在一行中没有解决方案吗?

非常感谢提前

2 个答案:

答案 0 :(得分:6)

你可以使用这个:

import numpy as np

x = np.array([1,2,3,4])
condition = (x <= 4) & (x > 1)
x_sel = np.extract(condition,x)
print(x_sel)
# [2 3 4]

或者没有extract

x_sel = x[(x > 1) & (x <= 4)]

答案 1 :(得分:3)

这应该有效:

import numpy as np

x = np.array([1,2,3,4])
condition = (x<=4) & (x>1)
x_sel = np.extract(condition,x)

请注意and&的使用情况: Difference between 'and' (boolean) vs. '&' (bitwise) in python. Why difference in behavior with lists vs numpy arrays?