2017-04-21 232 views
1

我有一個Matrix,總共包含5列。我想要做的就是打印Matrix,而不僅僅是第一2的所有列,如下圖所示:如何打印矩陣的所有列

val V: Matrix = svd.V // The V factor is a local dense matrix. 
println(V) 

給出了下面的輸出:

-1.0237272594782074E-4 -1.7078345817841522E-4 ... (5 total) 
-3.0092323368453486E-4 1.1734582822947035E-4 ... 
-8.783338552190558E-4 -0.0017472726007059717 ... 
-1.1383724568414156E-4 -4.3548729172213584E-4 ... 
-1.1693767421110056E-4 -2.418383762772299E-4 ... 
-1.7743361361571285E-4 1.8480473527241232E-4 ... 
-1.4886423625353203E-4 2.099922614106897E-4 ... 
-8.626317174508992E-4 -9.12157272113119E-4 ... 

回答

3

默認toString方法(在使用println時調用)不顯示所有行/列。你應該明確地使用其他方法toString這需要最高線,最大寬度爲參數:

println(V.toString(5,Int.MaxValue)) //Displays 5 first rows 
+0

現在的輸出是'12419 x 5矩陣'(根本沒有數據顯示) –

+1

更新了我的答案,第二個參數是行的寬度,而不是列數,我的不好。 – cheseaux

-1

有可能是一個更好的方式,但嵌套的for循環可以做的伎倆:

for (row <- V) { 
    for (column <- row) { 
     println(column); 
    } 
} 

研究:https://www.tutorialspoint.com/scala/scala_arrays.htm

+0

不起作用:'Main.scala:87:值的foreach不是org.apache.spark.mllib.linalg的成員(行< - V){'.Matrix 。 「V」不是「陣列」,而是「矩陣」。 –

0

矩陣轉換爲RDD,然後用foreach應該做的工作。

val V: Matrix = svd.V // The V factor is a local dense matrix.  
val Vrdd = sc.parallelize(V.rowIter.toSeq) 
Vrdd.take(8).foreach(println) 

將打印前8行和所有列

[-1.023727259478234E-4,-1.7078345817841533E-4,3.0839310929699345E-4,1.2892270831815856E-4,-3.2874234098349364E-4] 
[-3.009232336845317E-4,1.173458282294655E-4,2.737768257608553E-4,1.0077068531267255E-5,1.6105536507623856E-4] 
[-8.783338552190533E-4,-0.0017472726007059787,9.136695463186932E-4,3.2887292883284746E-4,0.0018690404940346112] 
[-1.1383724568414083E-4,-4.354872917221425E-4,-3.621489985336155E-5,2.70169363438746E-5,-5.056654658786913E-4] 
[-1.1693767421109712E-4,-2.418383762772343E-4,1.952750723593368E-4,3.5328858284551095E-5,6.579474844822932E-5] 
[-1.774336136157171E-4,1.8480473527241484E-4,1.4397978561015781E-6,-1.4225923969798783E-4,-4.2210858440213316E-4] 
[-1.4886423625353317E-4,2.0999226141068627E-4,-5.354866549487416E-5,1.2258687855367864E-4,4.4050687210353404E-4] 
[-8.626317174509001E-4,-9.121572721131233E-4,-0.004282058263767252,0.004032670016181569,-0.001070431177048715]