[英]Multiply every element of RDD with corresponding element in a list
例如:
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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.