如何判断两个ndarray相等?ndarray相等判断最佳实践
发布于 作者:苏南大叔 来源:程序如此灵动~

随着矩阵的维数不断增多,再人工判断两个矩阵是否是相同,就非常的费力气了。所以,这里要对判断两个ndarray
是否完全一致进行程序判断。

大家好,这里是苏南大叔的“程序如此灵动”博客,本文记录numpy
的ndarray
矩阵变量,两个变量是否相等的判断方式。本文测试环境:win10
,python@3.11.0
,numpy@1.24.2
。
标的变量
这里先获得标的变量,龙套角色。
如何理解.T
,可以参考:
传统双等号判断失败【不推荐】
如果使用传统的==
来做判断的话,会得到一个报错信息。说实话,这很意外,万能的双等号居然失败了!直接输出sn == sn2
的结果的话,可以看到:这个双等号的结果居然是个ndarray
类型的数组!真心是让人意外!
输出结果:

测试代码:
报错结果:
双等号判断改成三等号判断的话,直接语法错误。
方案一:(s==n).all()【不推荐】
输出:

这个方案不靠谱,不要使用!表面上看起来可以。但是,有个案!
方案二:np.array_equal(s,n)【推荐】
输出:
特殊方案:是否是本体
在本文中,sn2
和sn3
是完全一样的。但是!它们是两个变量,虽然相等,但是不是同一个变量!这种情况下,使用is
来断言。
其它方案
由于ndarray
类型的特殊性,也可以从其它角度(比如:.ndim
,.size
,.shape
)等等角度进行不相等判断。所以,不排除存在其它合理方案的可能性。这里就暂时不做谈论了。
结束语
更多苏南大叔的python
文章,请参考:


