使用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数组,但我宁愿避免做双重复制。