C++;二维向量到二维pybind11数组 我对C++很陌生,并且与PyBin斗争。我根本不知道如何说服pyBIN将2D向量从C++转换成Python可读格式。
这就是我心目中的代码:C++;二维向量到二维pybind11数组 我对C++很陌生,并且与PyBin斗争。我根本不知道如何说服pyBIN将2D向量从C++转换成Python可读格式。,python,c++,arrays,numpy,pybind11,Python,C++,Arrays,Numpy,Pybind11,这就是我心目中的代码: py::array_t<float> to_matrix(std::vector<std::vector<float>> &vals) { int N = vals.size(); int M = 6; py::array_t<float>({N, M}) arr; for (int i = 0; (i < N); i++) { for (int j =
py::array_t<float> to_matrix(std::vector<std::vector<float>> &vals)
{
int N = vals.size();
int M = 6;
py::array_t<float>({N, M}) arr;
for (int i = 0; (i < N); i++)
{
for (int j = 0; (j < M); j++)
{
arr[i][j] = vals[i][j];
};
};
return arr;
};
py::数组到矩阵(std::vector和vals)
{
int N=vals.size();
int M=6;
py::数组_t({N,M})arr;
对于(int i=0;(i
提前感谢您的帮助。这里有一些事情要做,但让我们从一个简单的例子开始。以下函数将从硬编码的
std::vector
py::数组到矩阵()
{
标准::向量VAL={
{1, 2, 3, 4, 5},
{6, 7, 8, 9, 10},
{11, 12, 13, 14, 15}
};
size_t N=vals.size();
size_t M=vals[0]。size();
py::array_t arr({N,M});
自动ra=阵列可变_未选中();
对于(大小i=0;i
有两件事需要注意,首先数组形状是数组的构造函数参数。第二种方法是使用mutable_unchecked
来获取可用于进行赋值的代理对象
在你的例子中,向量的矢量将来自C++代码的其他地方。
但请注意,pybind11还提供了包装容器的样板,如std::vector
。这些可在标题pybind11/stl_bind.h
中找到,并允许您执行此操作
std::vector make_vector()
{
标准::向量VAL={
{1, 2, 3, 4, 5},
{6, 7, 8, 9, 10},
{11, 12, 13, 14, 15}
};
返回VAL;
}
PYBIND11_模块(foo,m)
{
py::bind_向量(m,“FloatVector2D”);
m、 def(“make_vector”、&make_vector);
}
这样的对象不会完全等同于numpy数组(没有
形状
属性等)谢谢,这正是我要寻找的,并且完美地解决了我的问题:)是“FloatVector2D”是一个特殊的名称,以便pybind使用正确的绑定还是一个任意的命名?我只是找不到太多关于这个的文档不,完全是武断的,