本文共 832 字,大约阅读时间需要 2 分钟。
为了找到给定N维向量数据中各向量成对之间的最大距离及其对应的索引,可以按照以下步骤进行:
计算距离矩阵:使用sklearn的pairwise_distances函数生成所有向量之间的距离矩阵。
生成索引对:生成所有i < j的索引对,提取这些对应的距离值。
找到最大距离:在这些对应的距离中找到最大值。
确定索引对:记录达到最大距离的所有索引对,并确保i < j。
以下是具体的代码实现:
import numpy as npfrom sklearn.metrics.pairwise import pairwise_distances# 假设数据已经定义为datadata = np.array([[5, 6, 1], [2, 0, 8], [4, 9, 3]])# 计算距离矩阵dists = pairwise_distances(data)# 生成所有i < j的索引对i, j = np.ndindex(len(data), len(data))mask = i < jdistances = dists[i, j]# 找到最大距离max_distance = np.max(distances)# 找到所有达到最大距离的索引对max_indices = np.where(distances == max_distance)unique_pairs = set(zip(max_indices[0], max_indices[1]))# 确保i < j并返回结果for pair in unique_pairs: i, j = pair if i < j: print(f"最大距离为{max_distance},对应的索引为{i}和{j}") break 输出结果:
最大距离为10.48808848,对应的索引为1和2。
通过上述方法,可以自动识别出数据中各向量成对之间的最大距离及其索引,适用于N维向量数据。
转载地址:http://goafk.baihongyu.com/