or
当它在两个标量之间时是明确的,但是正确的向量泛化是什么?ifx == array([0, 0])
和y == array([0,1])
, 应该x or y
是 (1) 假,因为并非所有成对项or
一起为真,(2) 真,因为至少有一个成对or
结果为真, (3) array([0, 1])
,因为那是 a 的成对结果or
,(4) array([0, 0])
, 因为[0,0] or [0,1]
会返回,[0,0]
因为非空列表是真实的,那么array
s 应该是吗?
您可以|
在此处使用,并将其视为按位问题:
>>> import numpy as np
>>> vec = np.arange(10)
>>> vec[(vec == 2) | (vec == 7)]
array([2, 7])
显式使用numpy
s 向量化逻辑或:
>>> 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])
或 use 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])