从 N 维序列中获取质心

Get Centroid from Sequence in N-Dimensions

我正在尝试获取 n 维系列的质心。

这是我试过的:

def get_centroid(point1, point2):
    return sum((q + p) / 2 for p, q in zip(point1, point2))

p = [1, 2, 3, 4, 5, 6, 7]

q = [2, 3, 4, 5, 6, 7, 8]

get_centroid(p, q)
Out[18]: 31.5

但我想得到的是:

Out[]: [1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5]

我在这里错过了什么?

提前致谢。

使用列表理解而不是 sum 函数,因为:

  1. sum returns 可迭代的所有元素的总和,因此它现在返回平均值的总和
  2. 相反,您需要每个 list/points
  3. 中相应值的平均值
  4. 列表理解创建一个值列表,每个值由您已经编写的公式给出,用于求平均值

尝试以下操作:

代码

def get_centroid(point1, point2):
    return [(q + p) / 2 for p, q in zip(point1, point2)]

p = [1, 2, 3, 4, 5, 6, 7]

q = [2, 3, 4, 5, 6, 7, 8]

print(get_centroid(p, q))

输出

[1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5]