c++ 函数:
double cpp_func(const std::vector<double>& x) {
return ...;
}
我想使用pybind11
将此函数包装到 python,它接受 numpy 数组作为参数,x
可能非常大,所以我想通过引用或指针传递 numpy 数组。
要传入的数组从哪里开始其生命周期?如果你可以控制它的创建,那么你可以把它变成一个std::vector,并对该向量的数据((进行numpy视图。这样,你可以同时使用两者:在C++-land中时为向量,在Python端使用numpy数组。
唯一需要注意的是,在 numpy 视图的生命周期内,矢量不应调整大小(或者您知道它有史以来的最大大小,并在创建后保留((该内存(。
如果矢量从不调整大小,则可以使矢量成为视图的数据成员以同步生命周期。