我用pd.DataFrame创建了一个pandas数据帧({“A”:[“dog”,“cat”]})并将结果发送到c扩展名numpy数组。在C中,我做:
PyArrayObject * pArray = (PyArrayObject *) pArrayObj;
PyArray_Descr * pDesc = PyArray_DTYPE(pArray);
int kind = pDesc->kind;
npy_intp sz = PyArray_DIM(pArray, 0);
PyObject * p0 = (PyObject *) PyArray_GETPTR1(pArray, 0);
在上面的'kind'中包含'O'(对象数组)和sz = 2(如预期的那样)。但是p0似乎没有访问第一个对象:
(gdb) p *p0
$10 = {ob_refcnt = 140737227161872, ob_type = 0x7ffff06e8180}
注意损坏的refcnt和未解析的ob_type(期待PyUnicode_Type)。
有关正确获取指向每个元素的指针的建议吗?
我在Centos 7上使用numpy 1.14,g ++ 6.2.1
答案 0 :(得分:0)
想出如何做到这一点:
/[^\s]+(=".*?"|=".*?[^s]+|=[^\s]+|=)/g
答案 1 :(得分:0)
我发现了这个问题,因为我遇到了同样的问题。原来的代码几乎是正确的,最后一行只需要更多的指针魔术:
PyArrayObject * pArray = (PyArrayObject *) pArrayObj;
PyObject * p0 = *(PyObject **) PyArray_GETPTR1(pArray, 0);