2017-10-03 13 views
1

を処理するとき、私はCoordinateMatrix上の行を実行しようとしている反復可能ではない...MatrixEntry CoordinateMatrix ... pyspark MLlib

test = test.entries.map(lambda (i, j, v): (j, (i, v))) 

。私は

>>> test = test_coord.entries 
>>> test.first() 
>>> MatrixEntry(0, 0, 7.0) 

誰もがオフになる場合もあります知っている... CoordinateMatrixで働いているという行が実行されたときに私が取得エラー...

'MatrixEntry' object is not iterable 

と確認しましたか?

答えて

2

と仮定testその後、CoordinatedMatrixです:

test.entries.map(lambda e: (e.j, (e.i, e.value))) 

サイドノート:あなたは、ラムダ関数にタプルを解凍することはできません。だから、map(lambda (x, y, z):)は、失敗した理由ではないように見えますが、この場合は動作しません。


test = CoordinateMatrix(sc.parallelize([(1,2,3), (4,5,6)])) 
test.entries.collect() 
# [MatrixEntry(1, 2, 3.0), MatrixEntry(4, 5, 6.0)] 
test.entries.map(lambda e: (e.j, (e.i, e.value))).collect() 
# [(2L, (1L, 3.0)), (5L, (4L, 6.0))] 
+1

はありがとうございました!私は変数(i j v)が左になければならないと思った – cpd1

関連する問題