假设我有以下(MCVE...)的Cython函数:
cimport cython
from scipy.linalg.cython_blas cimport dnrm2
cpdef double func(int n, double[:] x):
cdef int inc = 1
return dnrm2(&n, &x[0], &inc)
那么,我无法在一个np.float32
数组x
上调用它。
我该如何让func
接受double[:]
或float[:]
,并交替调用dnrm2
或snrm2
?目前我唯一的解决方案是创建两个函数,这会产生大量重复的代码。