【问题标题】:How do I pass a numpy array to C++/SWIG using pointers without relying on numpy.i?如何在不依赖 numpy.i 的情况下使用指针将 numpy 数组传递给 C++/SWIG?
【发布时间】:2013-11-07 07:20:24
【问题描述】:

有没有办法只使用指向第一个元素的指针将 numpy 数组传递到 C++/SWIG?我有一个 C++ 函数,它预期一个 3×N 矩阵,该矩阵预计将存储在以列为主的索引连续内存中。因此,函数调用采用以下参数:

( double *mat3Xin, double *mat3Xout, int numTrip)

其中 numTrip 是矩阵的 N 维(即三元组的数量)。由于输入和就地输出的大小相同,因此我不需要传入。有没有一种方法可以在 SWIG 中轻松处理此问题,而无需使用 swig 的重命名内联功能并创建一个接受附加参数的辅助函数 swig 的 numpy 接口需要矩阵吗?我目前正在一个辅助函数中分解矩阵,然后调用原始函数的重命名版本,但是,将现有库中的所有函数转换为这种形式开始变得乏味。

谢谢,

【问题讨论】:

  • 获取指针不是问题,但首先要确保数组是c连续的。
  • numpy.i 是什么意思?
  • PyArray_DATA 为您提供指向元素 0,0 的指针。

标签: c++ python arrays numpy matrix


【解决方案1】:

也许这是不可能的,我被这些功能的手写界面所困扰: http://docs.scipy.org/doc/numpy/reference/swig.interface-file.html#a-common-example

【讨论】:

    猜你喜欢
    • 2019-01-28
    • 2017-10-03
    • 1970-01-01
    • 2010-11-19
    • 1970-01-01
    • 2016-09-15
    • 1970-01-01
    • 1970-01-01
    • 2013-08-06
    相关资源
    最近更新 更多