python比较两个矩阵

新手上路,请多包涵

在下面显示的矩阵中,我想匹配两个矩阵中的第一个元素。如果第一个元素相等,那么我需要匹配两个矩阵中的第二个元素,依此类推。如果元素相同,则打印“相同”,否则打印“不相同”……

我的问题是这对于 m*n 也是如何以最佳方式进行的,其中 m=n 总是

 for i in a1:
     for j in a2:
        if i!=j:
           break
         else:
           //compare the next corresponding columns and print "same" or "not same"

 a1=[1,44,55],[2,33,66],[3,77,91]

 a2=[1,44,55],[2,45,66],[3,77,91]

 OR

 a1=[1,44,55]
    [2,33,66]
    [3,77,91]

 a2=[1,44,55]
    [2,45,66]
    [3,77,91]

原文由 Rajeev 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 581
2 个回答

a1 == a2 出了什么问题?

 In [1]: a1=[[1,44,55],
   ...:     [2,33,66],
   ...:     [3,77,91]]

In [2]: a2=[[1,44,55],
   ...:     [2,45,66], # <- second element differs
   ...:     [3,77,91]]

In [3]: a1 == a2
Out[3]: False

In [4]: a1=[[1,44,55],
   ...:     [2,33,66],
   ...:     [3,77,91]]

In [5]: a2=[[1,44,55],
   ...:     [2,33,66],
   ...:     [3,77,91]]

In [6]: a1 == a2
Out[6]: True

原文由 Benjamin Wohlwend 发布,翻译遵循 CC BY-SA 3.0 许可协议

由于浮点舍入错误,您可能会遇到一些问题。

 >>> import numpy as np
>>> x = np.array(1.1)
>>> print x * x
1.21
>>> x * x == 1.21
False
>>> x * x
1.2100000000000002
>>> np.allclose(x * x, 1.21)
True

比较两个数值矩阵是否相等,推荐使用 np.allclose()

 >>> import numpy as np
>>> x = np.array([[1.1, 1.3], [1.3, 1.1]])
>>> y = np.array([[1.21, 1.69], [1.69, 1.21]])
>>> x * x
array([[ 1.21,  1.69],
       [ 1.69,  1.21]])
>>> x * x == y
array([[False, False],
       [False, False]], dtype=bool)
>>> np.allclose(x * x, y)
True

原文由 Roy Hyunjin Han 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题