如何在python中获取c数组

2024-04-19 09:57:28 发布

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

我有一个C函数:

void func(int n, int m)
{
    int Array[n][m];
    make_magic(Array);
}

制作二维阵列并进行处理。我在python3.5中使用这个func和如下ctypes:

from ctypes import *

magic = CDLL('lib_name')
magic.func(n,m)

那么如何在python中获取这个2D数组呢?你知道吗


Tags: 函数namefromimportmakelibmagic数组
2条回答

您想在Python中使用生成的数组,对吗?你知道吗

采用C代码通过接收到的指针“返回”数组。你知道吗

void func(int n, int m, int *Array)
{
    Array[0][0] = 42;   // fill array accordingly
    make_magic(Array);
}

按NumPy初始化数组,按函数创建并处理它,然后按NumPy进行后期处理:

from ctypes import *
import numpy
n, m = 5, 10
array = numpy.zeros((n,m), dtype=numpy.int)
magic = CDLL('lib_name')
magic.func(n,m, array.ctypes.data)

您必须处理返回的c数据类型,但是在c函数中添加return语句。然后你就可以:

array = magic.func(n,m)

或者,可以使用swig围绕c代码创建python包装器模块。然后您就可以直接在python中调用它的任何函数。你知道吗

相关问题 更多 >