如何解决如何根据特征中的条件获取行?
当元素是向量时,我需要获取某些行。
举个例子:
std::vector<bool>index{}; //contains 6000 numbers of elements 0 and 1
当向量索引中的相应元素为 1 时,如何获取矩阵垫中的行。
mat = mat[index];
解决方法
如果我清楚地理解你的问题,你可能会从这个好的回复中找到好的答案:
Eigen3 select rows out based on column conditions
使用新功能(Eigen 3.4 或 3.3.90 开发分支)并从上一个链接中获取核心代码:
#include <Eigen/Dense>
#include <iostream>
#include <vector>
using namespace Eigen;
int main() {
MatrixXd mat = MatrixXd::Random(10,5);
std::cout << "original:\n" << mat << std::endl;
std::vector<int> keep_rows;
for (int i = 0; i < mat.rows(); ++i) {
if (mat(i,mat.cols() - 1) > 0.3) {
keep_rows.push_back(i);
}
}
VectorXi keep_cols = VectorXi::LinSpaced(mat.cols(),mat.cols());
MatrixXd mat_sel = mat(keep_rows,keep_cols);
std::cout << "selected:\n" << mat_sel << std::endl;
}
它使用了与 Matlab 类似的风格:
MatrixXd mat_sel = mat(keep_rows,keep_cols);
但是应该保留的列和行存储在一个
Eigen::VectorXi
或在一个
std::vector<int>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。