Python 使用numpy矩阵最小化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

给定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,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
对数组进行切片的可能性。谢谢