You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Eigen中三维矩阵按最后维度求和的colwise()等效方法

解决Eigen三维张量沿指定维度求和的问题

首先要纠正一个关键细节:你代码里的Eigen::MatrixXd是二维矩阵类型,Eigen不支持用它直接创建三维结构,正确的三维张量应该用Eigen::Tensor<double, 3>来定义:

Eigen::Tensor<double, 3> mat(5, 10, 20);

针对沿最后一个维度求和得到5×10二维张量的需求,有两种高效实现方式,完全不需要手动遍历元素:

1. 使用Tensor的sum()方法指定求和维度

Eigen的Tensor模块提供了直接按维度求和的接口,三维张量的维度索引从0开始,最后一个维度对应索引2,直接传入该索引即可完成缩减:

// 沿最后一个维度(索引2)求和,得到5×10的二维张量
Eigen::Tensor<double, 2> result = mat.sum(2);

2. 用dimensionwise()模拟二维的colwise()/rowwise()风格

如果你习惯二维矩阵的链式调用写法,Tensor模块的dimensionwise()方法可以针对指定维度执行归约操作,效果类似colwise():

Eigen::Tensor<double, 2> result = mat.dimensionwise(Eigen::internal::SumReducer<double>(), 2);

需要注意,使用Tensor模块需要包含对应头文件,编译时确保链接Eigen的Tensor组件:

#include <Eigen/Tensor>

内容的提问来源于stack exchange,提问作者sodiumnitrate

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 07:13:13