如何用Eigen实现Numpy中数组取最小值更新的功能
使用Eigen实现Numpy的逐元素最小值替换逻辑
你的Numpy代码本质是初始化一个全为1e10的数组,然后将每个位置上dist中更小的值保留到distance里,Eigen提供了直接的逐元素操作函数,完全不需要手写循环:
对应Eigen代码示例
#include <Eigen/Dense> // 假设N是已知整数,dist为Eigen::VectorXd类型的数组 Eigen::VectorXd distance = Eigen::VectorXd::Constant(N, 1e10); distance = distance.cwiseMin(dist);
代码说明
Eigen::VectorXd::Constant(N, 1e10):对应Numpy里的np.ones((N,)) * 1e10,创建长度为N、所有元素均为1e10的向量。distance.cwiseMin(dist):逐元素对比distance和dist,取每个位置的最小值,返回结果直接赋值给distance,完全等价于你原代码中的mask判断+赋值逻辑。
如果是矩阵操作(而非向量),cwiseMin函数同样适用,Eigen的逐元素操作对矩阵、向量均兼容。
内容的提问来源于stack exchange,提问作者Leefty
相关产品推荐
相关产品推荐

