我有一个数组,希望不提取特定范围内的所有条目
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,我可以在一个条件下应用该过程两次,但是在一行中没有解决方案吗?
非常感谢提前
答案 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?