簡體   English   中英

將 RDD 的每個元素與列表中的相應元素相乘

[英]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))])

多謝!

我會使用zipWithIndexmap來做到這一點:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM