通过 SWIG 将简单的 numpy 数组传递给 C

Posted

技术标签:

【中文标题】通过 SWIG 将简单的 numpy 数组传递给 C【英文标题】:Pass simple numpy array to C via SWIG 【发布时间】:2012-01-12 09:30:28 【问题描述】:

我想通过 SWIG 将已知大小和类型的 numpy 数组传递给 C 函数

# .py
data = numpy.arange( N , dtype=numpy.int32 )
external_c_function( data )

# .i
extern void external_c_function( int32_t* data );

# .c
void external_c_function( int32_t* data)

    // ...

不幸的是,我会得到一个错误:

TypeError: in method 'external_c_function', argument 1 of type 'int32_t *'

将 numpy 数组传递给 SWIG 的最简单方法是什么?

【问题讨论】:

【参考方案1】:

您可以使用numpy.i。看看http://www.scipy.org/Cookbook/SWIG_NumPy_examples

【讨论】:

以上是关于通过 SWIG 将简单的 numpy 数组传递给 C的主要内容,如果未能解决你的问题,请参考以下文章

SWIG:将 2d numpy 数组传递给 C 函数 f(double a[])

如何将复数从 python numpy 传递给 c(目前正在尝试使用 SWIG)

将简单的 java 数组传递给原始的 c-array swig

将 2d numpy 数组传递给 C++ 时出现 TypeError

使用 SWIG 的几个 numpy 数组

使用 SWIG 将 Python 数组传递给 c++ 函数