从PyArray\u simplenewfrom创建Numpy NDArray时出现问题

2024-04-25 01:18:46 发布

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

我尝试做一个Python包装器,把一些C++函数和类型绑定到Python。我的问题是当我试图将自定义矩阵类型转换为numpy-ndarray时。最有说服力的解决方案是使用PyArray_SimpleNewFromData。在

为了测试它的行为,由于我没能做到我想要的,我试着实施一个简单的测试:

PyObject* ConvertToPython(...) {
    uint8_t test[10] = {12, 15, 82, 254, 10, 32, 0, 8, 127, 54};
    int32_t ndims = 1;
    npy_intp dims[1];
    dims[0] = 10;
    int32_t typenum = (int32_t)NPY_UBYTE;
    PyObject* python_object = PyArray_SimpleNewFromData(ndims, dims, typenum, (void*)test);
    Py_XINCREF(python_object);
    return python_object;
}

然后我在python中得到了以下结果:

^{2}$

但是数组中的值是:

test.values = [ 1  0  0  0  0  0  0  0 80  8]

我不明白,我做错了什么?我也不是很有经验做一个python包装器,所以任何帮助都是值得赞赏的!在


Tags: 函数testnumpy类型object矩阵解决方案pyobject
1条回答
网友
1楼 · 发布于 2024-04-25 01:18:46

我会尝试使用malloc分配的数组,然后设置一些名为OWNDATA的标志,以避免内存泄漏。在

如果numpy.ndarray的实例不复制数据,而只存储指向所提供数组的指针,则至少可以解释垃圾数据。函数返回后,指向堆栈分配数组的指针指向内存,该内存在堆栈更改时随时可能更改。在

相关问题 更多 >