【发布时间】:2012-01-10 01:03:06
【问题描述】:
在 cython 中仅使用 numpy 调用此函数的最佳方法是什么? 我不会使用 ctypes、memcpy、malloc 等。
功能 1)
#include <stdio.h>
extern "C" void cfun(const void * indatav, int rowcount, int colcount,
void * outdatav);
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] * 4;
}
puts("Done!");
}
功能 2)
#include <stdio.h>
extern "C" __declspec(dllexport) void cfun(const double ** indata, int
rowcount, int colcount, double ** outdata) {
for (int i = 0; i < rowcount; ++i) {
for (int j = 0; j < colcount; ++j) {
outdata[i][j] = indata[i][j] * 4;
}
}
}
崔元俊
【问题讨论】:
-
不需要从 python 调用这些函数。你可以使用 numpy 做同样的事情
-
我必须这样做的原因是我需要包装一些现有的 c、c++ 库.. 所以.. 只是制作 numpy 函数不是解决方案。这就是为什么我发布了像上面这样的简单示例。
-
然后发布真正的功能,发布您的代码尝试和您遇到的错误