or
当它在两个标量之间时是明确的,但什么是正确的向量泛化?如果x == array([0, 0])
和y == array([0,1])
,应该x or y
是:(1)假的,因为不是所有的两两方面or
-ed在一起是真的,(2)真,因为至少有一个成对or
结果为真,(3)array([0, 1])
,因为这是成对结果or
,(4)array([0, 0])
,因为[0,0] or [0,1]
会返回[0,0]
,因为非空列表是真的,所以应该是array
?
你可以使用|
这里,并把它当作位问题:
>>> import numpy as np
>>> vec = np.arange(10)
>>> vec[(vec == 2) | (vec == 7)]
array([2, 7])
明确使用numpy
小号矢量逻辑或:
>>> np.logical_or(vec==3, vec==5)
array([False, False, False, True, False, True, False, False, False, False], dtype=bool)
>>> vec[np.logical_or(vec==3, vec==5)]
array([3, 5])
或使用in1d
,远远这里更有效:
>>> np.in1d(vec, [2, 7])
array([False, False, True, False, False, False, False, True, False, False], dtype=bool)
>>> vec[np.in1d(vec, [2, 7])]
array([2, 7])