假设我们有矩阵A
,B
如下
>>> A
matrix([[0, 0, 0, 1],
[1, 0, 0, 0],
[1, 0, 0, 0]])
>>> B
matrix([[0, 1, 0, 0],
[0, 0, 1, 0],
[0, 0, 1, 0]])
显然,我们可以通过列交换将矩阵 A "转换"为 B。是否有一种有效的算法来检查两个(可能很大的)矩阵是否可以以这种方式相互转换?
这是一个简单的函数。对于非常大的矩阵,(A==B).all()
可能比np.array_equal(A,B)
慢。
import numpy as np
A = np.array([[0, 0, 0, 1],
[1, 0, 0, 0],
[1, 0, 0, 0]])
B = np.array([[0, 1, 0, 0],
[0, 0, 1, 0],
[0, 0, 1, 0]])
def isSwaping(a, b):
count = 0
for i, c in enumerate(a.T): # transpose of a
for d in b.T:
if (c == d).all():
count += 1
break
if count == i : # then it is uncessary to continue
return False
return True
print isSwaping(A, B)