如何从 pybind11 中的向量向量创建 2d numpy 数组?
我正在寻找一种快速且无需复制的方法(所以移动?),并且我想以模板化的方式进行。
到目前为止我有:
template< typename T >
py::array
array2d_from_vector(std::vector<std::vector<T>> & m) {
if (m.empty()) return py::array_t<T>();
std::vector<std::vector<T>>* ptr = new std::vector<std::vector<T>>(std::move(m));
auto capsule = py::capsule(ptr, [](void* p) {
delete reinterpret_cast<std::vector<std::vector<T>>*>(p);
});
return py::array_t<T>(
{ptr->size(), ptr->at(0).size()}, // shape of array
{ptr->at(0).size()*sizeof(T), sizeof(T)}, // c-style contiguous strides
capsule);
}
它向 python 返回一个无意义的二维数组,其值如下:
[[ 4.0852747e+30 3.0677226e-41 4.0853762e+30 3.0677226e-41]...
那我还缺什么啊!我猜这与向量保存数据的方式有关,但我的值应该在 0 和 1 之间。
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)