首页 > 解决方案 > 在Scala中反转矩阵

问题描述

我在 Scala 中有这个矩阵:

val seq1 = (1, 2, 3)
val seq2 = (4, 5, 6)
val seq3 = (7, 8, 9)
val matrix = Seq(seq1,seq2,seq3)

我需要反转它,结果应该是:

val matrix2 = matrix.inverted
println(matrix2)

Seq(Seq(1,4,7), Seq(2,5,8), Seq(3,6,9))

实现这一目标的最佳方法是什么?

标签: scala

解决方案


您的矩阵是元组列表。

matrix: Seq[(Int, Int, Int)] = List((1,2,3), (4,5,6), (7,8,9))

您可以使用以下方法找到此元组列表的转置

val transMatrix=matrix.map(tp=>List(tp._1,tp._2,tp._3)).transpose.map(lst=>(lst(0),lst(1),lst(2))).toSeq

上述方法的输出

transMatrix: Seq[(Int, Int, Int)] = List((1,4,7), (2,5,8), (3,6,9))

推荐阅读