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

如何在C++ Eigen中实现矩阵动态复制,对标NumPy的repeat功能

Eigen动态复制矩阵的正确实现方案

错误原因分析

你用到的B.replicate<1, A.rows()>()写法属于模板参数传参,Eigen中模板参数要求必须是编译期可确定的常量,而A.rows()是运行时才能获取的动态值,因此编译阶段就会报错,无法正常运行。

正确实现方式

Eigen的replicate接口提供了支持动态参数的重载,直接将复制次数作为函数入参传入括号内即可,不需要写在尖括号的模板参数中:

#include <Eigen/Core>
using namespace Eigen;

int main() {
    MatrixXi A = MatrixXi::Random(100,1);
    MatrixXi B = MatrixXi::Random(88,1);
    // 第一个参数为行方向复制次数,第二个参数为列方向复制次数
    MatrixXi B_replicated = B.replicate(1, A.rows());
    return 0;
}

上述代码生成的B_replicated形状为(88, 100),和np.repeat(B, A.shape[0], axis=1)的效果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 04:36:08