利用 NumPy 的优势广播 http://docs.scipy.org/doc/numpy/user/basics.broadcasting.html你应该制定数组的规则b
首先平方,这可以通过使用来实现itertools.izip_longest
:
from itertools import izip_longest
c = np.array(list(izip_longest(*b))).astype(float)
导致:
array([[ 1., 2., 5., 7.],
[ 2., 8., 6., nan],
[ 13., 9., nan, nan]])
然后,通过做np.isclose(c, a)
你会得到一个二维布尔数组,显示每个布尔值之间的差异c[:, i]
and a[i]
,根据广播规则,给出:
array([[ True, True, False, False],
[False, False, False, False],
[False, False, False, False]], dtype=bool)
可用于获取您的答案:
np.any(np.isclose(c, a), axis=0)
#array([ True, True, False, False], dtype=bool)