代码:
>>> aa = np.array([1,2,3])
>>> cc = np.array([1,2])
>>> (aa==cc).all()
报错:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'bool' object has no attribute 'all'
原因:
被比较的两个ndarray shape不一致时,返回值只有一个True或者False。所以单一的True或者False是bool变量,没有all属性。报错。
只有当两个ndarray的shape一致时,aa==bb 才能返回矩阵所有位置比较的结果对应True或者False。如下:
>>> aa==cc# 输出只有一个bool值
False>>> bb = np.array([1,2,3])
>>> aa==bb# 输出所有位置的比较结果
array([ True, True, True])# 输出总的结果
>>> (aa==bb).all()
True
PS:
(aa==bb).all 只要有一个位置的对应比较结果为False则输出都为False,全部位置为True才输出True
(aa==bb).any只要有一个位置为True则输出都为True,全部位置为False才输出False