为了账号安全,请及时绑定邮箱和手机立即绑定

比较两个numpy数组的相等性,逐个元素

比较两个numpy数组的相等性,逐个元素

倚天杖 2019-08-16 15:27:56
比较两个numpy数组的相等性,逐个元素比较两个numpy数组是否相等的最简单方法是什么(其中相等定义为:A = B iff对于所有索引i :) A[i] == B[i]?简单地使用==给我一个布尔数组: >>> numpy.array([1,1,1]) == numpy.array([1,1,1])array([ True,  True,  True], dtype=bool)我是否必须and使用此数组的元素来确定数组是否相等,还是有更简单的比较方法?
查看完整描述

3 回答

?
慕运维8079593

TA贡献1876条经验 获得超5个赞

(A==B).all()

测试数组(A == B)的所有值是否为True。


编辑(来自dbaupp的回答和yoavram的评论)


应当指出的是:


在特定情况下,此解决方案可能具有奇怪的行为:如果其中一个A或B为空而另一个包含单个元素,则返回True。由于某种原因,比较A==B返回一个空数组,all运算符返回该数组True。

另一个风险是,如果A和B不具有相同的形状并且不可播放,那么这种方法将引发错误。

最后,我提出的解决方案是标准之一,但是我认为,如果你有一个关于怀疑A和B形状或只是想安全:使用专门的功能之一:


np.array_equal(A,B)  # test if same shape, same elements values

np.array_equiv(A,B)  # test if broadcastable shape, same elements values

np.allclose(A,B,...) # test if same shape, elements have close enough values


查看完整回答
反对 回复 2019-08-16
?
慕勒3428872

TA贡献1848条经验 获得超6个赞

(A==B).all()解决方案是很整齐,但也有完成这个任务的一些内置的功能。即array_equalallclosearray_equiv

(虽然,一些快速测试timeit似乎表明该(A==B).all()方法是最快的,这有点奇怪,因为它必须分配一个全新的数组。)


查看完整回答
反对 回复 2019-08-16
  • 3 回答
  • 0 关注
  • 7997 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信