我已经生成了列表项之间的成对距离矩阵,但是出了问题并且它不对称。
在这种情况下,矩阵如下所示:
array = np.array([
[0, 3, 4],
[3, 0, 2],
[1, 2, 0]
])
如何找到实际的不对称性?在本例中,索引为 4 和 1。
我通过尝试使用 scipy squareform 函数压缩矩阵,然后使用来确认不对称性
def check_symmetric(a, rtol=1e-05, atol=1e-08):
return np.allclose(a, a.T, rtol=rtol, atol=atol)
很晚了,但这里有一个替代的 numpy 方式......
import numpy as np
m = np.array([[0, 3, 4 ],
[ 3, 0, 2 ],
[ 1, 2, 0 ]])
def check_symmetric(a):
diff = a - a.T
boolmatrix = np.isclose(a, a.T) # play around with your tolerances here...
output = np.argwhere(boolmatrix == False)
return output
输出:
check_symmetric(m)
>>> array([[0, 2],
[2, 0]])
我是一名优秀的程序员,十分优秀!