Eigen3 根据列条件选择行

2023-12-02

我的特征矩阵有一个二维矩阵,例如:

122 443 544 456 0.9
324 435 5465 645 0.8
32 434 545 546 0.778
435 546 6565 656 0.6878
546 6565 656 3453 54 0.7788
5456 546 545 6565 3434 0.244
435 5456 656 656 6565 0.445
.....

当最后一列值大于 0.3 时,我想选择所有行(或获取其行索引)。

我知道我可以通过迭代所有行并判断最后一个元素来做到这一点,但我可能有 10000 行,要做到这一点,迭代会非常慢。

有没有更好的方法来做到这一点?


通过将最后一列中所有元素的比较结果存储到一个布尔数组中,可以在一行中完成相关行的选择,该布尔数组可以转换为 VectorXi。

VectorXi is_selected = (mat.col(last_col).array() > 0.3).cast<int>();

然后可以使用该信息来准备一个仅包含所选行的新矩阵。使用此方法的完整代码如下所示。

#include <Eigen/Dense>
#include <iostream>    
using namespace Eigen;

int main() {
  const int nr = 10;
  const int nc = 5;
  MatrixXd mat = MatrixXd::Random(nr,nc);
  std::cout << "original:\n" << mat << std::endl;
  int last_col = mat.cols() - 1;

  VectorXi is_selected = (mat.col(last_col).array() > 0.3).cast<int>();

  MatrixXd mat_sel(is_selected.sum(), mat.cols());
  int rownew = 0;
  for (int i = 0; i < mat.rows(); ++i) {
    if (is_selected[i]) {       
       mat_sel.row(rownew) = mat.row(i);
       rownew++;
    }
  }
  std::cout << "selected:\n" << mat_sel << std::endl;
}

Demo: https://godbolt.org/z/f0_fC0

编辑:使用新功能(Eigen 3.4 或 3.3.90 开发分支)

Eigen 的开发分支提供了 MatrixX 构造函数的新重载,允许直接对给定矩阵进行子集化。

MatrixXd mat_sel = mat(keep_rows, keep_cols); 

应保留的列和行存储在Eigen::VectorXi或在一个std::vector<int>:

#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(), 0, mat.cols());
  MatrixXd mat_sel = mat(keep_rows, keep_cols);          
  std::cout << "selected:\n" << mat_sel << std::endl; 
}

Demo: https://godbolt.org/z/Ag7g7f

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Eigen3 根据列条件选择行 的相关文章

  • 异步回调到BackgroundWorker

    我想使用 NET FTP 库 http netftp codeplex com http netftp codeplex com 该库提供 BeginOpenRead string AsyncCallback object 使用异步编程模型
  • VS Code:自定义关键字的注入语法范围在 C++ 中被覆盖

    我想制作一个小型 VS Code 扩展 为 C C 代码中的少数自定义关键字添加语法突出显示 我正在尝试通过注入语法来做到这一点source c and source cpp语言范围 遵循VS Code 语法高亮指南 https code
  • 无捕获 lambda 是结构类型吗?

    P1907R1 http www open std org jtc1 sc22 wg21 docs papers 2019 p1907r1 html 接受 C 20 引入结构类型 它们是非类型模板参数的有效类型 GCC 和 Clang 都接
  • 从值获取键 - Dictionary>

    我无法通过指定值来获取密钥 我实现这一目标的最佳方法是什么 var st1 new List
  • 使用 C# 使用证书进行 SSL 客户端身份验证

    我需要创建一个 C 应用程序 该应用程序必须使用 SSL 向服务器发送 API 请求 我需要创建客户端身份验证 我已经拥有服务器 CA 证书 客户端证书 cer 客户端私钥 pem 和密码 我找不到有关如何创建客户端连接的示例 有人可以建议
  • 未构建 csproj 时抑制 AfterBuild 目标

    我在 MSBuild 中有一个构建后目标来复制一些构建输出 这是 linkedin 作为对AfterBuild目标 暴露于Microsoft CSharp targets
  • 重写 ASP.Net Core 中的 415 响应

    在 ASP net Core 2 1 中 我想返回 Json 响应以及状态代码 415 而不是默认返回的 415 为了实现这一点 我使用资源过滤器 public class MediaTypeResouceFilter Attribute
  • Err_Response_Headers_Multiple_Content_Disposition

    我需要导出 2csv单击一个按钮即可打开文件 下面是我生成2的代码csv files using System Data using System Data SqlClient using System Text using System
  • C# 如何在没有 GacUtil 的情况下在 GAC 中注册程序集?

    我需要使用批处理文件在 GAC 中注册程序集 有没有办法找到安装位置GacUtil exe或者有没有办法在没有 GacUtil 的情况下注册程序集 Your bestbet is to use a powershell script tha
  • 当 MSB 位等于 0 时如何以十六进制格式打印它们

    我需要使用打印变量HEX格式 问题是当我的变量很小时 MSB 等于 0 因此不会打印它们 ex uint16 t var 10 0x000A h gt 我需要打印 000A 但无论我做什么它总是打印 A 我怎样才能让它发挥作用 您可以添加前
  • Time 方法在另一个线程中执行并在超时时中止

    您好 我正在尝试异步运行方法 以便计算持续时间并在超过超时时取消该方法 我尝试使用异步和等待来实现这一点 但没有运气 也许我过度设计了这个 任何输入都会受到赞赏 应该注意的是 我无法更改接口 TheirInterface 因此得名 到目前为
  • 了解C/C++中函数调用的堆栈框架? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我也是 C C 和汇编语言的新手 这
  • std::regex 的行为不一致

    我有以下问题 std regex如果我传递结果 行为会有所不同boost filesystem path string vs 将结果存储在中间字符串变量中 第一个将返回一个被截断的匹配 并且稍后不被接受std stoull 抛出 inval
  • cygwin $'\r':命令未找到错误

    我稍微修改了一个项目 在调试下它运行得很好 当我尝试在不调试的情况下构建它时 它显示错误 无法修复它 make Making all in third party make 1 Entering directory cygdrive c U
  • OpenXML 如何获取范围内的单元格

    请帮助我获取范围内的单元格 例如从 A 1 到 E 11 都是矩形单元格 目前我的理想是 Worksheet worksheet GetWorksheet document sheetName SheetData sheetData wor
  • 什么时候适合在 C++ 中使用 static(在未命名的命名空间上)?

    我一整天都在阅读有关未命名命名空间的文章 大多数文章都解释了何时应该在 static 关键字上使用未命名命名空间 但我仍然有一个大问题什么时候适合使用静态 毕竟它还没有完全弃用 那么带有静态函数的头文件我现在应该将它们放入未命名的命名空间中
  • NHibernate Criteria API 是否支持集合属性的投影?

    我需要使用条件 API 复制以下工作 HQL 查询 session CreateQuery select c from Parent p inner join p Children c where p Id 9 and c Id 33 Se
  • 在一个数据库请求中连接 IQueryable 集合

    我使用实体框架 我需要连接两个集合 例如 IQueryable
  • 同时运行 x 个网络请求

    我们公司有一个网络服务 我想通过我自己的服务发送 XML 文件 存储在我的驱动器上 HTTPWebRequestC 中的客户端 这已经有效了 Web服务同时支持5个同步请求 一旦服务器上的处理完成 我就会从Web服务获得响应 每个请求的处理
  • Microsoft Graph API 调用无限期挂起

    我正在尝试使用 Microsoft Graph 查询 Azure Active Directory 用户信息 我可以很好地进行身份验证 但是当我尝试查询用户信息时client Users我的应用程序无限期挂起 没有超时 没有错误 只是挂起

随机推荐

  • 使用“on”和“by”从两个 data.table 计算新变量

    我怎么不能用by当通过两个计算新变量时data tables合并后 示例数据集 library data table set seed 1 Example datasets dt1 lt data table id 1 10 var rno
  • 安卓中的OBB是什么

    我不知道如何使用OBB 有演示吗 我不知道它的优点 在android2 3以下的设备上使用会抛出异常吗 Detail 我读过一些有关它的文章 但我仍然不太了解 人们使用它似乎只是因为应用程序大小限制为 50mb 使用它可以将其扩大到4GB
  • 如何使用 scipy odeint 求解这个微分方程?

    我正在尝试使用 scipy odeint 求解以下微分方程 但没有取得太大成功 import numpy as np from scipy misc import derivative from scipy integrate import
  • 根据 Python str.format() 文档,什么是有效键

    我是 Python 新手 刚刚阅读了 Python 文档中的以下部分6 1 3 格式化字符串语法 Because arg name is not quote delimited it is not possible to specify a
  • 无法从 mainBundle 中删除文件

    我在从主包中删除文件时遇到问题 当我从 XCODE 4 2 中的支持文件中手动删除它们时 当我运行我的应用程序时它们仍然出现 我已经使用 显示包内容 打开了应用程序文件 并从那里手动删除了它们 当我运行应用程序时它们仍然显示 我已从模拟器和
  • 如何检查docker容器内是否正在运行进程?

    更新1 我有一个shell 它会更改某些功能中的TCP内核参数 但现在我需要使这个shell在Docker容器中运行 这意味着 shell需要知道它正在容器内运行并停止配置内核 现在我不知道如何实现这一点 这是内容 proc self cg
  • 如何将名称附加到 R 中输出数据帧的“列名称”?

    我知道我可以使用更改列的名称 colnames x lt c Column1 Column 2 Column 3 Column 4 如果我有 A lt Apple B lt Banana 我应该怎么做才能使输出数据帧的名称具有这样的名称 C
  • 如何裁剪多边形外的区域?

    我想使 PHP 中预定义多边形之外的任何内容变得透明 假设您有头部的形状 那么图像的其他任何内容都应该被分箱 预先非常感谢 为了让自己清楚 这是我一直在编写的一些代码 dat dirname FILE foto time png img i
  • 如何覆盖 @Html.LabelFor 模板?

    我有一个简单的字段表单 div class field fade label Html LabelFor model gt model Register UserName Html TextBoxFor model gt model Reg
  • 302 登录重定向后,URL 片段被 IE 删除

    We use 站点管理员我们的应用程序中的身份验证 如果应用程序用户尝试导航到特定页面https ourapp com myapp pending requests在我们的应用程序中通过直接 URL 或通过书签 URL SiteMinder
  • NSOperation 和 NSOperationQueue 工作线程与主线程

    我必须在我的应用程序中执行一系列下载和数据库写入操作 我正在使用NSOperation and NSOperationQueue对于相同的 这是应用场景 从一个地方获取所有邮政编码 对于每个邮政编码获取所有房屋 对于每栋房子获取居民详细信息
  • 如何在计算器应用程序中不重复数学运算两次?

    我使用 android studio 在 Kotlin 中制作了一个简单的计算器 我遇到的问题是如何在输入数字后不重复数学运算 但我没有办法解决它 也许是因为我是 Android 应用程序开发领域的新手 我不知道应该如何做避免这个问题 我的
  • 查找子子列表中元素的索引

    我有一个如下所示的列表 a 0 0125 6 6 0 0125 6 65 0 0125 6 7 0 0125 6 75 0 0125 6 8 0 0185 6 6 0 0185 6 65 0 0185 6 7 0 0185 6 75 0 0
  • 如何连接到代理:IPC connect 调用

    我正在使用Ubuntu VERSION 20 04 LTS Focal Fossa 在Windows 10上 我尝试安装Docker 我正在关注 docs docker com 中的文档 我运行两个命令 curl fsSL https ge
  • 有什么方法可以列出正在运行的 docker 容器中安装的所有依赖项或库吗?

    有什么方法可以列出运行中安装的所有依赖项或库码头集装箱 不完全是 您可以检查容器映像的历史记录 这将使您了解从基础映像完成的各种操作 运行 复制 添加 以构建所述映像 但不要忘记容器可以从一个简单的图像运行 如 SCRATCH 无文件 1
  • Google Place Photo API 返回 404

    对于我使用的任何照片参考 Google Place Photo API 都会返回 404 我确信我做错了什么 附近的 Google 请求 KEY 附近回复的照片参考 CmRZAAAAu3qofo2XYSX74WtaGYIZ6iMA97uXm
  • 错误:“无法加载 MvcApplication 类型”

    我收到错误 无法加载 MvcApplication 类型 当我尝试运行我的网站时 如何纠正呢 尽管听起来很愚蠢 但尝试了所有方法都不起作用 最后重新启动 VS2012 才能看到它再次工作
  • 登录 WordPress 网站时,使用当前用户信息动态填充联系表单 7 输入字段

    我一直在尝试弄清楚如何在我的 WordPress 网站上的联系表单中填充输入字段 我尝试过使用名为 Contact Form 7 动态文本扩展的插件 并尝试使用 PHP 编写一个非常简单的 IF 语句 但我似乎无法让它发挥作用 使用该插件
  • 如果 0.1 没有二进制表示,为什么我得到 0.1

    当我跑步时 System out println 1f 0 9f I get 0 100000024 这是因为 0 1 没有二进制表示 那为什么当我打印这个时 System out println 0 1f 我明白了 0 1 的价值0 1f
  • Eigen3 根据列条件选择行

    我的特征矩阵有一个二维矩阵 例如 122 443 544 456 0 9 324 435 5465 645 0 8 32 434 545 546 0 778 435 546 6565 656 0 6878 546 6565 656 3453