微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何通过rdd中的键计算x和y坐标的平均值?

如何解决如何通过rdd中的键计算x和y坐标的平均值?

我有一个键值对形式的 rdd,以质心作为键,所有距离它们最近的点作为列表中的值。

-O0

我正在尝试按键分别计算每个质心的所有 x 和 y 坐标的平均值。我希望生成如下输出

data = [('d1',[(4.832,1.963),(5.439,2.147),(5.009,2.522)]),('d2',[(4.26,2.033),(5.24,1.642),(4.814,2.033)]),('d3',[(4.646,1.827),(5.137,1.858),(5.288,1.842)])]

我尝试了以下代码,但没有得到任何结果。

[('d1',(5.09,2.21)),(4.77,1.9)),(5.02,1.84))]

我有点被困在这里,非常感谢这方面的帮助。

解决方法

不需要按keyreduce,因为数据已经按key分组了。您只需要计算每个条目的平均值,例如使用 numpy.mean

import numpy as np

avg_data = data.map(lambda r: (r[0],tuple(np.mean(r[1],axis=0))))

avg_data.collect()
# [('d1',(5.093333333333334,2.2106666666666666)),#  ('d2',(4.771333333333334,1.9026666666666667)),#  ('d3',(5.023666666666666,1.8423333333333334))]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。