numpy - 如何仅使用 numpy 从距离矩阵中提取数据点?
问题描述
我有两组数据点:
答:MX10
乙:nx10
A和B中数据点的距离矩阵D:mxn
如何使用距离矩阵D提取k行 A ,其中它们与B中数据点的距离最小?矩阵的大小应为 nxk。我不想循环遍历矩阵的每一列和每一行,所以我对一种仅使用矩阵的方法感兴趣。
D = np.distance_matrix(A, B)
解决方案
假设已经给出了完整的数组D并且“到B的距离”表示“到B中所有元素的所有距离中最小的”,那么它应该类似于
d = D.min(axis=1) # m-long vector of distances from points in A to B
ord = d.argsort() # an array of indices in d sorted by the corresponding values
kD = d[ord[:k],:] # take first k elements
k
如果远小于,这不是很有效m
,因为它对所有元素进行排序,而不是仅仅找到k
th。但它应该可以解决问题。
推荐阅读
- go - 如何使用新的 AWS 令牌更新 GORM 中的数据库连接
- android - Kotlin Spinner 选择
- python - How to vectorize advanced indexing with list of lists in NumPy?
- python - python中的芹菜conf
- java - 如何从HashMap中的ArrayList中打印出一个键和一个平均数
- ios - Firebase 检索子嵌套数据
- wireguard - Wireguard - 如何使用 Wireguard VPN 拆分隧道限制对没有静态 IP 的应用程序的 VPN 访问?
- css - 背景图像:url() 没有从 css 文件加载图像
- sas - 如何使用proc sql从sas中的以下数据中获取第一行
- javascript - 如何格式化具有空行的 excel 文件以具有嵌套数组并匹配我需要呈现的 JSON 对象?