例如:
x = RandomRDDs.normalRDD(sc, size=3, seed=0)
x 是这样的:[-1.3, -2.4, -4.5]我想将 x 的每个元素与列表 [1, 2, 3] 中的一个不同 数相乘,然后将它们相加得到 y。这里 y 等于 -1.3*1 + -2.4*2 + -4.5*3
但我只能这样做:
y = x.map(lambda i: i*2).reduce(lambda a, b: a+b)
这里 y = -1.3*2 + -2.4*2 + -4.5*2
如何每次用不同的数字替换 x.map(lambda i: i*2) 中的 2?
最后的效果就像我们在python中经常做的那样:
x = [-1.3, -2.4, -4.5]
w = [1, 2, 3]
y = sum(x*w)
或
sum([x[i]*w[i] for i in range(len(x))])
非常感谢!
我会使用 zipWithIndex
和 map
来做到这一点:
x = RandomRDDs.normalRDD(sc, size=3, seed=0)
w = sc.broadcast([1, 2, 3])
x.zipWithIndex().map(lambda v: v[0] * w.value[v[1]]).sum()
或者,
import operator
x.zipWithIndex().map(lambda v: v[0] * w.value[v[1]]).reduce(operator.add)
我是一名优秀的程序员,十分优秀!