gpt4 book ai didi

python - 用 cython 扩展 numpy

转载 作者:太空狗 更新时间:2023-10-30 02:35:36 25 4
gpt4 key购买 nike

我想包装一个头文件,它有很多这样的功能

测试.h

void test(int N, int* data_in, int* data_out);

这样我就可以使用 numpy 中的那些。

现在我有以下 cython 代码:

测试.pyx

import numpy as np
cimport numpy as np

ctypedef np.int_t itype_t

cdef extern from 'VolumeForm.h':
void _test 'test' (int, int*, int*)

def wrap_test(np.ndarray[itype_t, ndim=2] data):
cdef np.ndarray[dtype_t, ndim=1] out
out = np.zeros((data.shape[0],1), dtype=np.double)
_test(
data.shape[0],
<itype_t*> data.data,
<itype_t*> out.data
)
return out

但是,当我尝试编译它时出现错误:

Error converting Pyrex file to C:
(...)
Cannot assign type 'test.itype_t *' to 'int *'

我该如何解决这个问题?

最佳答案

这个问题目前正在 Cython 邮件列表中讨论;显然它源于一个 Cython 库中的一个小错误:

http://codespeak.net/mailman/listinfo/cython-dev

目前,一种可能的解决方法是使用 dtype np.long 的 NumPy 数组,然后改写“ctypedef np.long_t itype_t”。然后你只需要让 C 代码对 long ints 而不是 ints 感到满意。

关于python - 用 cython 扩展 numpy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1944006/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com