有没有办法返回任意长度字符串的ndarray和dtype PyObject?

时间:2017-03-30 18:37:33

标签: python c++ boost boost-python

使用Boost(版本> = 1.63)对Boost-Python的numpy扩展是否有办法返回dtype = object的任意长度字符串的numpy数组?与this类似,但在C ++中。

如果字符串填充不是问题,则以下代码段可用:

#include <boost/python.hpp>
#include <boost/python/numpy.hpp>

namespace bp = boost::python;
namespace np = boost::python::numpy;

np::ndarray get_numpy_array(){
    vector<string> strings = {"a","aa","aaa","aaaa"};
    bp::list py_list;
    for(auto& s: strings){
        py_list.append(s);
    }
    np::ndarray py_array = np::array(py_list);
    return py_array;
}

此玩具示例中的返回dtype<U4。在实践中,我将拥有从一个到几千个字符的字符串,并且宁愿避免填充较小字符串的成本。

或者我可以返回boost::python::list并在Python中处理转换回Numpy数组,但我宁愿避免做双重复制。

0 个答案:

没有答案