我在熊猫中有两个数据框,其中包含两组粒子的坐标;现在我想计算每个粒子之间的最小距离。在实践中:将secon数据帧中的第i个粒子与第j个粒子进行比较,并寻找最小值。
由于数据集很大,我想避免两个for循环;我怎样才能有效地实现这一目标?有任何内置功能可以完成这项工作吗?
distance.cdist(df1,df2)只是计算同一行中每个粒子的距离。如何对此进行改进?
感谢
如何使用scipy.spatial.distance_matrix
?但是,这可能会创建一个非常大的矩阵,具体取决于有多少个点。另一种选择是使用四叉树或scipy.spatial.distance_matrix
我不确定我是否正确理解了您的问题,但是if您要计算第一个矩阵中的每个粒子与第二个矩阵中的每个粒子之间的距离,then围绕两个循环(每个矩阵一个循环)。
如果要比较具有相同索引的粒子,则可以执行以下操作:
KD Tree
或者如果数据框的大小不同。
for i in range(len(df1.index)):
distance.cdist(df1.iloc[i,:],df2.iloc[i,:])