设置负元素特征稀疏向量C++



将特征稀疏向量中的所有负值设置为零的最有效方法是什么?

我有一个 SparseVector,w/~1000000 个元素,非零条目很少。 我需要将负数设置为零。 遍历整个向量需要太多时间。 有没有更有效的方法可以做到这一点?

for (Eigen::SparseVector<double, Eigen::RowMajor>::InnerIterator it(fullScan); it; ++it) {
if (it.value() < 0) {
fullScan.coeffRef(it.index()) = 0;
}
}

对于SparseMatrix,您实际上可以将prune与自定义函子一起使用(对于应保留的值,必须返回 true(:

mat.prune([](int, int, const double& val) { return val >= 0.0; });

不过,不知道为什么这不适用于SparseVector。

相关内容

  • 没有找到相关文章

最新更新