簡體   English   中英

從 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 function 因為:

  1. sum返回可迭代的所有元素的總和,因此它現在返回平均值的總和
  2. 相反,您需要每個列表/點中相應值的平均值
  3. 列表理解創建一個值列表,每個值都由您已經編寫的公式給出,求平均值

嘗試以下操作:

代碼

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))

Output

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM