numpy数组判断是否相等之.all()与.any()有何不同

ndarray类型数据判定是否相等

报错提示:The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

解决办法:使用 .any() or .all() 

这两个有什么不同呢,又是在什么情况下使用呢,我们通过实验对比分析下:

# 采用控制变量的方法假设有 A B C D 四个数组,其中
    A与B完全相等
    A与C部分相等
    A与D完全不等
      

A = np.array([1,2,3])
B = np.array([1,2,3])
C = np.array([2,2,4])
D = np.array([5,6,7])

1、先用 ==  来测试返回的结果

print(A == B)
>>> [ True  True  True] 
print(A == C)
>>> [False  True False]
print(A == D)
>>> [False False False]

可以看出直接用等于号返回的是一个布尔值组,返回的是等号右边数组中每个元素与左边数组对应位置元素是否相等,相等返回true,不等返回false,所以在一些场景直接使用==系统判断没法得出到底是True还是False的结论,所以会出现开头的报错。那么使用.all()还是.any()也要根据你的情况来使用。

2、.all()返回的结果
print((A == B).all())
>>> True
print((A == C).all())
>>> False
print((A == D).all())
>>> False
可以看出,完全相等返回True,部分相等与完全不等均返回False

3、.any()返回的结果
print((A == B).any())
>>> True
print((A == C).any())
>>> True
print((A == D).any())
>>> False
可以看出,完全相等与部分相等返回True,完全不等返回False

Results

在进行逻辑判断时,如果要两个数组完全相等的情况下返回True,则使用.all()函数;

如果只要两个数组有共同部分返回True,则使用.any()函数。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值