c++ - 有没有办法像 python :np. concatenate([x,y,z], axis=1) 中那样在 C++ 中沿 Column 连接三个二维 vector ?

标签 c++ multidimensional-array

我正在尝试像 python 一样在 C++ 中连接二维 vector :

np.concatenate([x,y,z], axis=1)

我尝试了下面的代码,但它沿着行连接。

std::vector<std::vector<int>> dest{{1,2,3,4,5}};
std::vector<std::vector<int>> src{{6,7,8,9,10}};

dest.insert(
  dest.end(),
  src.begin(),
  src.end()
);

输出:

1 2 3 4 5 6 7 8 9 10

但我希望它像下面这样:

1 6
2 7
3 8
4 9
5 10

是否有一种解决方法可以像上面的 python np.concatenate 函数那样沿列进行串联? 我正在尝试可视化数据,因此我需要转置所有 vector 并沿列连接。

最佳答案

您可以使用 newmat11 实现类似 phyton 的行为:http://www.robertnz.net/nm11.htm

std::vector<int > dest{ 1,2,3,4,5 }; 
std::vector<int > src{ 6,7,8,9,10 };
std::vector<int> third{ 11,12,13,14,15 };
Matrix x(5, 3);
x.column(1) << dest.data();
x.column(2) << src.data();
x.column(3) << third.data();
Matrix sub = x.submatrix(1, 5, 1, 2);

std::cout << sub << std::endl;

产生以下输出

1.0   6.0
2.0   7.0
3.0   8.0
4.0   9.0
5.0  10.0

矩阵连续存储其值,因此您可以像这样获得单个 vector :

std::vector<double> merge(sub.Store(), sub.Store() + sub.size());
for (auto& digit : merge) std::cout << digit << "\t";

产生以下输出: 1 6 2 7 3 8 4 9 5 10

“最难”的事情是:

  1. 从主页下载所有需要的.h和.cpp文件
  2. 创建一个包含 newmat11 文件的新项目
  3. 构建为 .lib
  4. 为您的主项目添加引用、包含目录和 .lib 路径

关于c++ - 有没有办法像 python :np. concatenate([x,y,z], axis=1) 中那样在 C++ 中沿 Column 连接三个二维 vector ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54443657/

相关文章:

在 C 中创建一个空心矩形而不添加空格作为其元素

javascript - 如何访问 Javascript 二维对象数组?

c++ - 为 STL 迭代器定义了哪些运算符?

c++ - 当 REQ-Socket 没有连接的对等点时 ZMQ 消息丢失

c++ - 只有负数正确加法

C++ 派生类和多态调度

c - 如何将三维动态字符数组写入和读取到文件?

javascript - 我无法将 JSON 数据放入数组中

java - 使用 GSON 将 2D JSON 数组反序列化为 bean

c++ - Windows Mobile C++ - 应用程序设计类型的问题