在c++中如何将向量转换为特征数组xd?我发现的唯一方法包括:
Eigen::ArrayXd newEigen = Eigen::ArrayXd::Zero(oldVector.size());
然后循环替换每个元素,有没有更好的方法?我尝试了一个循环。期望简单的方法来复制数据,如:
Eigen::ArrayXd newEigen(oldVector.data());
w6lpcovy1#
虽然这可能是[eigen]标签中最常问的问题,但数量惊人的答案并不是最优的,所以下面是最短、最简洁的版本:
Eigen::ArrayXd newEigen = Eigen::ArrayXd::Map( oldVector.data(), static_cast<Eigen::Index>(oldVector.size()));
如果您不想复制数据,Eigen::Map会借用向量中的数据,以便您可以就地访问或更改它。
Eigen::Map
Eigen::Map<Eigen::ArrayXd> mapped( oldVector.data(), static_cast<Eigen::Index>(oldVector.size()));
Eigen::Map与Eigen::Array的关系就像std::string_view与std::string的关系,如果这有助于解释的话。
Eigen::Array
std::string_view
std::string
1条答案
按热度按时间w6lpcovy1#
虽然这可能是[eigen]标签中最常问的问题,但数量惊人的答案并不是最优的,所以下面是最短、最简洁的版本:
如果您不想复制数据,
Eigen::Map
会借用向量中的数据,以便您可以就地访问或更改它。Eigen::Map
与Eigen::Array
的关系就像std::string_view
与std::string
的关系,如果这有助于解释的话。