【发布时间】:2019-10-22 22:02:15
【问题描述】:
嗯,我有以下列:
Id PlayId X Y
0 0 2.3 3.4
1 0 5.4 3.2
2 1 3.2 5.1
3 1 4.2 1.7
如果我有两行按一个 PlayId 分组,我想添加两列距离和角度:
Id PlayId X Y Distance_0 Distance_1 Angle_0 Angle_1
0 0 2.3 3.4 0.0 ? 0.0 ?
1 0 5.4 3.2 ? 0.0 ? 0.0
2 1 3.2 5.1
3 1 4.2 1.7
每个距离列都描述了组中第 i 个和第 j 个元素之间的欧几里得距离:
dist(x0, x1, y0, y1) = sqrt((x0 - x1) ** 2 + (y0 - y1) ** 2)
类似的方法,计算第i个和第j个元素之间的角度。
那么,我怎样才能有效地执行此操作,而无需逐个处理元素?
【问题讨论】:
-
hm.. 你的例子中的 x0 和 x1 是什么?
-
元素的适当坐标:第 i 个元素为 x0,第 j 个元素为 x1。
-
我不太明白分组情况。你能举一个
Distance_0和Distance_1中的值的例子吗? X 和 Y 的哪些值用于计算这些距离? -
我的意思是
Distance_{i}表示第 i 个元素与当前元素之间的距离。对于第一个元素,例如,Distance_0 = dist(x0, y0, x0, y0) = 0.0、Distance_1 = dist(x0, y0, x1, y1)。对于第二个元素,Distance_0 = dist(x0, y0, x1, y1)、Distance_1 = dist(x1, y1, x1, y1) = 0.0 -
实际上,我们得到一个主对角线为零的距离矩阵。角度矩阵的构造方法相同。