[英]Python/Cython/C and callbacks, calling a Python function from C using Cython
[英]Calling a Python function from C with Cython: Problems with NumPy data types
所以我想做的是以下几点:
我唯一的问题是我不知道如何在 C 中创建一个 NumPy 数组或在我的 cdef function 中返回一个数组。 我当然尝试过在互联网上搜索和阅读,但我发现没有任何真正有用的东西(或者不明白建议的内容)。 我尝试了 memoryviews 但我也没有让它工作:
cdef public int[:,:] c_array_to_numpy(int[:,:] input):
cdef int [:,:] memview = input
cdef int[2][3] output
for x in range(memview.shape[0]):
for y in range(memview.shape[1]):
memview[x, y] *= 5
output[x][y] = memview[x][y]
return output
在 C 中它应该看起来像这样
int test[2][3] = {{3, 7, 4}, {8, 5, 9}};
c_array_to_numpy(test);
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 3; j++)
{
printf("%i ", test[i][j]);
}
printf("\n");
}
Numpy内部使用C arrays,所以不需要做转换。
我建议首先使用 scipy.weave (它允许你在 python 中嵌入 C 代码),一旦你有这个工作,然后考虑使用适当的库在你的 python 源之外托管 C 代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.