相关疑难解决方法(0)

将Numpy数组传递给C函数以进行输入和输出

哦,我的话,我是个傻瓜. 在调用函数时,我只是省略了第二个和第三个参数.像一个傻瓜.因为那就是我.原来愚蠢的问题如下:

这似乎是一件很常见的事情,但我找不到相关的教程,而且我太无知了,Numpy并且ctypes自己弄清楚了.

我在文件中有一个C函数ctest.c.

#include <stdio.h>

void cfun(const void * indatav, int rowcount, int colcount, void * outdatav) {
    //void cfun(const double * indata, int rowcount, int colcount, double * outdata) {
    const double * indata = (double *) indatav;
    double * outdata = (double *) outdatav;
    int i;
    puts("Here we go!");
    for (i = 0; i < rowcount * colcount; ++i) {
        outdata[i] = indata[i] * 2;
    }
    puts("Done!");
}
Run Code Online (Sandbox Code Playgroud)

(正如你可能猜到的那样,我最初的论点是double*而不是void*,但是无法弄清楚在Python方面该怎么做.我当然喜欢把它们改回来,但我并不挑剔只要它有效.)

我从中创建了一个共享库.gcc -fPIC …

python ctypes numpy ffi

50
推荐指数
2
解决办法
2万
查看次数

标签 统计

ctypes ×1

ffi ×1

numpy ×1

python ×1