我想将特征向量重塑为矩阵,然后采用.colwise()。sum()。
Eigen教程中说明的重塑命令未编译(https://eigen.tuxfamily.org/dox-devel/group__TutorialReshape.html)
因此,我的问题与Eigen版本编号(是否已发布Eigen 3.4?)和reshape命令本身(我的编译错误为“ Eigen :: VectorXd没有名为'reshaped'的成员”)有关,以及关于高效的替代方案:
VectorXd phi = X * beta;
ArrayXd sumPhi = phi.reshaped(4,12).colwise().sum();
答案 0 :(得分:1)
Eigen 3.4尚未发布(截至2019年5月),我建议尝试开发分支。
由于phi
是实际对象(而不是表达式),因此可以使用Map
实现相同的目的:
ArrayXd sumPhi = MatrixXd::Map(phi.data(),4,12).colwise().sum();
这应该适用于Eigen的任何版本(至少从3.0开始),但是由于不能确保元素数量实际匹配(如果phi
少于4*12
个元素而不太安全) ,这可能会访问无效的内存。