PyArray_SimpleNewFromData示例

时间:2015-05-20 17:59:58

标签: python c++ numpy

我知道这件事已经回答了很多次,我也阅读了文档,但我仍然无法清楚地理解这是如何工作的。在中,我无法理解如何在其参数中填充值。这些例子不是很清楚地解释它(或者可能是我不能)。谁能帮助我了解这个函数的参数是如何填充的?他们的价值观应该是什么? 我必须将一个从C ++传递到Python的向量而不重新分配内存。 任何帮助深表感谢。很多天我都坚持这个。

我正在实施的代码:

Request.NewMeRequest (currentSession, this).ExecuteAsync ();

2 个答案:

答案 0 :(得分:5)

函数is

 PyObject *
    PyArray_SimpleNewFromData(
        int nd, 
        npy_intp* dims, 
        int typenum, 
         void* data)
  • 最后一个参数(data)是数据的缓冲区。让我们放弃它。

  • 第二个参数(dims)是一个缓冲区,其每个条目都是一个维度;所以对于1d数组,它可以是长度为1的缓冲区(甚至是整数,因为每个整数都是长度为1的缓冲区)

  • 由于第二个参数是缓冲区,因此第一个参数(nd)表示其长度

  • 第三个参数(typenum)表示类型。

例如,假设您在x处有4个64位整数:

要创建数组,请使用

int dims[1];
dims[0] = 4;
PyArray_SimpleNewFromData(1, dims, NPY_INT64, x)

要创建2X2矩阵,请使用

int dims[2];
dims[0] = dims[1] = 2;
PyArray_SimpleNewFromData(2, dims, NPY_INT64, x)

答案 1 :(得分:0)

确保您堵住了上述方法造成的内存泄漏。我猜上面的x是类型void *的指针。检出this