所以这个问题涉及到问题转换矩阵格式,烫伤
但是现在,我想做背部手术。所以我可以这样做:
Tsv(in, ('row, 'col, 'v))
.read
.groupBy('row) { _.sortBy('col).mkString('v, "\t") }
.mapTo(('row, 'v) -> ('c)) { res : (Long, String) =>
val (row, v) = res
v }
.write(Tsv(out))
但是,在那里,我们遇到了零的问题。如我们所知,滚烫跳过零值字段。例如我们得到了矩阵:
1 0 8
4 5 6
0 8 9
格式如下:
1 1 1
1 3 8
2 1 4
2 2 5
2 3 6
3 2 8
3 3 9
使用我上面写的函数,我们只能得到:
1 8
4 5 6
8 9
这是不正确的。那么,我该怎么处理呢?我看到两种可能的变体:
找到方法,加零(实际上,不知道如何插入数据)
以自己的矩阵格式编写自己的操作(这是不可预测的,因为我对滚烫的矩阵操作感兴趣,不想自己编写所有的操作)
有没有一些方法,我可以避免跳过矩阵中的零?
1条答案
按热度按时间j13ufse21#
烫伤存储数据的稀疏表示。如果要输出密集矩阵(首先,它不会缩放,因为行在某个点上会超出内存的容量),则需要枚举所有行和列: