2012-06-01 1174 views
0

在下面顯示的矩陣中,我想匹配兩個矩陣中的第一個元素。如果第一個元素相等,那麼我需要匹配來自兩個矩陣的第二個元素,等等。如果元素相同,則打印「相同」,否則打印「不同」....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] 
+1

的語法'a1','a2'看起來並不正確 – Levon

+0

我想繪製矩陣形式,所以我已經顯示如圖所示 – Rajeev

回答

4

這有什麼錯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 
0

如果你想在矩陣做運算,numpy是你可以使用最好的圖書館

In [11]: a = numpy.matrix([[1,44,55], 
    ...:     [2,33,66], 
    ...:     [3,77,91]]) 

In [12]: b = numpy.matrix([[1,44,55], 
    ...:     [2,45,66], 
    ...:     [3,77,91]]) 

In [13]: a == b 
Out[13]: 
matrix([[ True, True, True], 
     [ True, False, True], 
     [ True, True, True]], dtype=bool) 
5

你可能會碰到由於浮點舍入誤差的一些問題。

>>> 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 
+0

不確定,爲什麼這個答案沒有被標記爲接受的答案。 – Pramit