Python 使用numpy矩阵最小化3组点之间的距离
给定3组二维点Python 使用numpy矩阵最小化3组点之间的距离,python,numpy,matrix,mathematical-optimization,Python,Numpy,Matrix,Mathematical Optimization,给定3组二维点A、B和C A=np.asarray([a1,a2,a3,…,ak]) B=np.asarray([b1,b2,b3,…,bm]) C=np.asarray([c1,c2,c3,…,cn]) 我想计算一个矩阵AC的维数kxn,它包含了从a中的每个点到C中的每个点经过B中的最佳点的最小(欧几里德)距离(最好的是使路径的距离最小化a->B->C) 到目前为止,我已经得到了距离矩阵AB和BC,其中A到B点和B到C点之间的每对距离 AB=scipy.space.distance_矩阵(A
A
、B
和C
A=np.asarray([a1,a2,a3,…,ak])
B=np.asarray([b1,b2,b3,…,bm])
C=np.asarray([c1,c2,c3,…,cn])
我想计算一个矩阵AC
的维数kxn
,它包含了从a中的每个点到C中的每个点经过B中的最佳点的最小(欧几里德)距离(最好的是使路径的距离最小化a->B->C
)
到目前为止,我已经得到了距离矩阵AB
和BC
,其中A到B点和B到C点之间的每对距离
AB=scipy.space.distance_矩阵(A,B)
BC=scipy.space.distance_矩阵(B,C)
当然,我现在可以运行嵌套的for循环来获得矩阵AC
我的问题是,这是否可以只使用AB
和BC
之间的矩阵运算来实现(允许形状变换)
它甚至可以是直接在A
、B
和C
之间进行的操作
此外,是否有可能获得尺寸k x n
的类似矩阵BestB
,该矩阵在每个元素i,j
中包含使a[i]
到B[j]
之间的距离最小的点的索引
如果有任何有效的算法来解决此问题,如果您能提及,我也将不胜感激您可以在此处使用广播:
dist_mat = (AB[...,None] + BC)
min_dist = dist_mat.min()
很好的解决方案,您可能还希望
dist_mat.min(axis=2)
和dist_mat.argmin(axis=2)
获得所有的最小值(对于x C的每个成员)和使最小值的指数。这就像预期的那样工作!还可以了解使用省略号和None
对数组进行切片的可能性。谢谢