python计算元组长度_最快的方法来计算一个坐标元组的重心在python中没有numpy

大家下午好!

我一直在研究一个非常时间敏感的项目(不幸的是在python中),并且广泛使用的一个函数是计算(x,y)元组列表的重心的函​​数.为了显示:

def centroid(*points):

x_coords = [p[0] for p in points]

y_coords = [p[1] for p in points]

_len = len(points)

centroid_x = sum(x_coords)/_len

centroid_y = sum(y_coords)/_len

return [centroid_x, centroid_y]

哪里

>>> centroid((0, 0), (10, 0), (10, 10), (0, 10))

[5, 5]

此功能运行相当快,上述示例在我的系统上平均为1.49e-05秒完成,但我正在寻找计算质心的最快方法.你们有什么想法吗?

其他解决方案之一是执行以下操作(其中l是元组列表):

map(len(l).__rtruediv__, map(sum, zip(*l)))

它运行在1.01e-05和9.6e-06之间,但不幸的是转换为列表(通过围绕list(…)中的整个语句)几乎使计算时间增加一倍.

欢迎所有的建议!谢谢!

编辑:欢迎在纯python的建议,但不是numpy.

EDIT2:刚刚发现,如果为元组列表的长度保留了一个单独的变量,那么上面的map的实现可以在9.2e-06秒之前可靠地运行,但还是有一个转换回列表的问题.

EDIT3:

现在我只接受纯蟒蛇的答案,而不是以麻木的方式接受答复

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值