Arrays 如何在scala中创建这样的矩阵?

Arrays 如何在scala中创建这样的矩阵?,arrays,scala,matrix,Arrays,Scala,Matrix,我有一张像这样的桌子 ID Name 1 11 2 12 3 13 4 14 5 15 6 16 我想用这个表创建一个矩阵。矩阵应该是这样的 0 11 12 13 14 15 16 1 1/6 0 0 0 0 0 2 0 1/6 0 0 0 0 3 0 0 1/6 0 0 0 4 0 0

我有一张像这样的桌子

ID    Name
1      11
2      12
3      13
4      14
5      15
6      16
我想用这个表创建一个矩阵。矩阵应该是这样的

0   11   12   13   14   15   16  

1   1/6  0    0     0   0    0

2   0   1/6   0     0   0    0

3   0    0    1/6   0   0    0  

4   0    0    0   1/6   0    0

5   0    0    0    0   1/6   0

6   0    0    0     0   0    1/6

其中i的指数等于j,即i=j=>1/6,否则为0。

这可能不是最整洁的方式,但它可以满足您的要求:

//假设表由对组成
val表:列表[(双精度,双精度)]=
名单(
1.0 -> 11.0,
2.0 -> 12.0,
3.0 -> 13.0,
4.0 -> 14.0,
5.0 -> 15.0,
6.0 -> 16.0
)
println(表)
//下面假设我们希望矩阵是一个行列表,其中每一行都是一个列表[双精度]
//获取表的列
val t1=表.map(u._1)
val t2=表映射(u.u 2)
//将第一行分开,因为它与其他行不同
val firstRow=0.0::t2
//创建其他行-从第一列的值开始,然后是对角矩阵项
val otherRows=t1.zipWithIndex.map{case(a,row)=>
a::t1.index.toList.map(i=>if(i==row)1.0/6.0否则0.0)
}
//组装整个矩阵
val矩阵=第一行::其他行
//矩阵为列表[列表[双精度]
println(矩阵)
//印刷品
println(matrix.map(row=>row.map(a=>f“$a%.3f”).mkString(“\t”).mkString(“\n”))
我把这个代码放在一个

最终结果是:

0.000   11.000  12.000  13.000  14.000  15.000  16.000
1.000   0.167   0.000   0.000   0.000   0.000   0.000
2.000   0.000   0.167   0.000   0.000   0.000   0.000
3.000   0.000   0.000   0.167   0.000   0.000   0.000
4.000   0.000   0.000   0.000   0.167   0.000   0.000
5.000   0.000   0.000   0.000   0.000   0.167   0.000
6.000   0.000   0.000   0.000   0.000   0.000   0.167

Array.ofDim
也可用于创建多维数组,对吗?限制:最多支持五个维度&应事先知道行和列的数量。例如:
val matrix=Array.ofDim[Double](rowCount,colCount)
Reference-