在Python中获取坐标列表的平均值

5

我有一个像 [[1, 2, 2], [1, 2, 1], [1, 1, 1]] 这样的坐标列表,想要获得它们的平均值,例如在这个例子中是[1, 1.66666666, 1.333333333]。然而,我不知道如何做到这一点。我尝试过使用NumPy和基本的列表操作,但它们都无法正常工作。有人能帮帮我吗?我正在使用python 3.6

2个回答

4
您可以使用NumPy数组进行按列平均值计算,方法如下:axis=0用于按列计算平均值。您也可以在此处使用np.mean()函数。
data =  np.array([[1, 2, 2], [1, 2, 1], [1, 1, 1]] )

averaged = np.average(data, axis=0)
print (averaged)
# [1.         1.66666667 1.33333333]

抱歉,但这似乎在此列表上不起作用:[[2, 3, 5],[2, 4, 5]],它输出了[3.3333333333333335,3.6666666666666665]。我希望它是一个坐标。 - Brian Zheng
[3.3333333333333335, 3.6666666666666665] 是正确的答案。你还期望什么? - Sheldore
其实,OP想要的是列的平均值,而不是行。 - mattsap
@mattsap:哦,问题中没有提到,所以我认为它是列表方式。 - Sheldore
抱歉,如果我没有表达清楚,我确实想要该列的平均值,对此感到抱歉。 - Brian Zheng
显示剩余2条评论

4
我猜这就是你所寻找的内容:
data = [[1, 2, 2], [1, 2, 1], [1, 1, 1]]
average = [sum(x)/len(x) for x in zip(*data)]
print(average)

希望你正在使用 Python 3.x。


嗨,@Lena Oxton,你的代码在Python 2上也能正常工作 :) - Hiadore

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接