如何解决如何通过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 举报,一经查实,本站将立刻删除。