输入数据:
我有以下 distance_matrix
:
[[1. , 0.14285714, 0.25 , 0.83333333, 0.63636364],
[0.14285714, 1. , 0.33333333, 0.84615385, 0.66666667],
[0.25 , 0.33333333, 1. , 0.76923077, 0.58333333],
[0.83333333, 0.84615385, 0.76923077, 1. , 0.69230769],
[0.63636364, 0.66666667, 0.58333333, 0.69230769, 1. ]]
当前结果:
np.where(distane_matrix <= 0.25)
返回以下输出:
(array([0, 0, 1, 2]), array([1, 2, 0, 0]))
期望的结果:
(array([0, 0]), array([1, 2]))
说明:
用语言表达,因为我知道:
-
[0,1]
与[1,0]
具有相同的值 -
[0,2]
与[2,0]
具有相同的值 -
[0,1]
和[0,2]
满足np.where()
的要求
我不想要[1,0]
和 [2,0]
在输出中返回,因为它是冗余信息。执行此操作的最佳方法是什么?
最佳答案
假设d
是一个指定的距离矩阵。
演示:
In [28]: r = np.triu(d, 1)
In [29]: r
Out[29]:
array([[0. , 0.14285714, 0.25 , 0.83333333, 0.63636364],
[0. , 0. , 0.33333333, 0.84615385, 0.66666667],
[0. , 0. , 0. , 0.76923077, 0.58333333],
[0. , 0. , 0. , 0. , 0.69230769],
[0. , 0. , 0. , 0. , 0. ]])
In [30]: np.where((r>0) & (r<=0.25))
Out[30]: (array([0, 0], dtype=int64), array([1, 2], dtype=int64))
关于python - Numpy - 从距离矩阵中提取唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50825505/