有没有办法返回任意长度字符串和数据类型PyObject的数组?

2024-04-26 10:37:20 发布

您现在位置:Python中文网/ 问答频道 /正文

使用Boost的(version>;=1.63)numpy扩展来boostpython有没有一种方法可以返回任意长度字符串的numpy数组,其中dtype = object?类似于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数组的转换,但我更希望避免执行双重复制。你知道吗


Tags: 字符串pynumpyincludenp数组namespacearray