将特征稀疏向量中的所有负值设置为零的最有效方法是什么?
我有一个SparseVector,带有〜1000000个元素,带有很少的非零条目。我需要将负数设置为零。遍历整个向量需要太多时间。有更有效的方法吗?
答案 0 :(得分:0)
for (Eigen::SparseVector<double, Eigen::RowMajor>::InnerIterator it(fullScan); it; ++it) {
if (it.value() < 0) {
fullScan.coeffRef(it.index()) = 0;
}
}
答案 1 :(得分:0)
对于SparseMatrix
,您实际上可以将prune
与自定义函子一起使用(对于必须保留的值,该函子必须返回true):
mat.prune([](int, int, const double& val) { return val >= 0.0; });
不确定为什么SparseVector无法使用此功能。