从 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
函数,因为:
sum
returns 可迭代的所有元素的总和,因此它现在返回平均值的总和
- 相反,您需要每个 list/points
中相应值的平均值
- 列表理解创建一个值列表,每个值由您已经编写的公式给出,用于求平均值
尝试以下操作:
代码
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]
我正在尝试获取 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
函数,因为:
sum
returns 可迭代的所有元素的总和,因此它现在返回平均值的总和- 相反,您需要每个 list/points 中相应值的平均值
- 列表理解创建一个值列表,每个值由您已经编写的公式给出,用于求平均值
尝试以下操作:
代码
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]