2 3 0 1
它应该是以下输出矩阵:
1 1 0 1
我认为这类似于map操作,所以伪代码操作相当于 mapElements(x -> (x > 0) ? 1 : 0) mapNonZeroes(x -> 1) .
mapElements(x -> (x > 0) ? 1 : 0)
mapNonZeroes(x -> 1)
一种可能的方法是将矩阵的非零元素展开为值设置为0/1的三元组,并从三元组重建矩阵。有更好的办法吗?
对我来说,有效的方法是直接访问 nz_values
nz_values
public void normalizeMatrix(DMatrixSparseCSC m) { for (int i = 0; i < m.nz_length; i++) { m.nz_values[i] = Math.min(m.nz_values[i], 1.0); } }