将整数Numpy ndarray传递给ctypes函数

时间:2014-03-10 03:29:04

标签: python numpy ctypes

我有一个问题是通过ctypes将整数的Numpy ndarray传递给C函数。下面是一个显示问题的MWE。首先是C函数,它只需要一个数组作为参数打印其值。

#include <stdio.h>

void my_fun(int *array, int num)
{
    for(int i=0; i<num; i++){
        printf("array value: %d \n", array[i]);
    }
}

现在是Python / ctypes实现:

import numpy as np
import ctypes

c_int_p = ctypes.POINTER(ctypes.c_int)

_sample_lib = np.ctypeslib.load_library('_sample','.')
_sample_lib.my_fun.restype= None
_sample_lib.my_fun.argtypes = [c_int_p, ctypes.c_int]

my_array = np.arange(5,dtype=np.int)

_sample_lib.my_fun(my_array.ctypes.data_as(c_int_p), len(my_array))

运行Python代码会产生:

array value: 0
array value: 0
array value: 1
array value: 0
array value: 2

注意数组中的额外0。为什么他们在那里,我怎么摆脱他们?

0 个答案:

没有答案