在下面显示的矩阵中,我想匹配两个矩阵中的第一个元素.如果第一个元素相等,那么我需要匹配两个矩阵中的第二个元素,依此类推......如果元素相同则打印"相同",否则打印"不相同"....
我的问题是这对于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]
Run Code Online (Sandbox Code Playgroud)
由于浮点舍入错误,您可能会遇到一些问题.
>>> 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
Run Code Online (Sandbox Code Playgroud)
要比较两个数值矩阵是否相等,建议您使用 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
Run Code Online (Sandbox Code Playgroud)
怎么了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
Run Code Online (Sandbox Code Playgroud)
如果您使用的是 numpy 数组,请使用.all()and .any()。
x = np.array([[1, 2, 3], [4, 5, 6]])
y = np.array([[1, 2, 3], [4, 5, 6]])
x.all() == y.all()
>> True
x = np.array([[1, 2, 3], [4, 5, 6]])
y = np.array([[11, 21, 31], [41, 4, 61]])
x.any() == y.any()
>> True (since x[1][0] == y[1][1])
Run Code Online (Sandbox Code Playgroud)