尽管令人困惑的标题我的问题很简单:我有一个DataFrame,其坐标为几个实体,并且想要计算它们的距离,而不必在每一行上运行。我的DataFrame名为S,看起来像
Template.registerHelper("currentUser", function(input) {
return Session.get("userMail") === input;
});
我想计算每个段的距离。目前我正在这样做
X Y
id
4000000030992760 542478 175110
4000000030146750 538252 175394
4000000030237400 536188 176897
4000000030099730 536496 174693
4000000030418980 529663 181684
4000000030238500 532567 179727
4000000030146350 535936 173268
4000000030146220 535051 173088
4000000030709450 539079 173084
4000000031197690 522850 178571
但我确信有一种更有效的程序方法。
由于
答案 0 :(得分:1)
所以你想建立一个距离矩阵?
如果是这样,您可以使用scipy
或sklearn
中已编写的函数,如:
DataFrame
更一般地说,您要查找的是apply
列的矢量化属性。您可以使用已经向量化的函数(如 numpy )和运算符。如果没有,您可以使用applymap
方法(或def make_dist_mat(xy):
d0 = np.subtract.outer(xy[:,0], xy[:,0])
d1 = np.subtract.outer(xy[:,1], xy[:,1])
return np.hypot(d0, d1)
make_dist_mat(df[['X', 'Y']].astype(float).values)
)将函数应用于列(或您的行)而不对其进行迭代(pandas documentation关于该行)。
计算所有位置之间距离的有效方法可能是:
Graphics g = Graphics.FromImage(this.pictureBox1.Image);
g.Clear(this.pictureBox1.BackColor);