python - Numpy - 从距离矩阵中提取唯一值
问题描述
输入数据:
我有以下内容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))
推荐阅读
- jetbrains-ide - JetBrains Rider 中是否有任何方法可以在文件之间保留“查找”输入框
- ssh - SSH 中的非对称加密
- r - 循环函数,以避免使用 R 进行分层抽样中的重复代码
- javascript - 不和谐 JS | 使用命令编辑嵌入
- python-3.x - 在python中将RGB值列表显示为图片FAST
- python - 从 keras.preprocessing API 将 tensorflow 数据集拆分为训练、测试和验证集
- python - 使用 tensorflow.keras 模型的 concurrent.futures 并行预测
- python - Pandas read_csv 不读取原始字符串
- c++ - 如何在 C++ 中将字符串从十进制代码转换为西里尔文/unicode16?
- c++ - 摆脱输入缓冲区