2

Cython 中的函数如何将两个不同类型的 numpy 数组(例如一个整数数组,另一个浮点数组)作为参数?此处的示例http://docs.cython.org/src/userguide/numpy_tutorial.html?highlight=numpy#adding-types展示了如何为 int 数组执行此操作,但我想要一个类似的函数:

import numpy as np
cimport numpy as np
## how do define array types here?
DTYPE = ???
ctypedef np.int_t DTYPE_t
def foo(np.array arr_of_ints, np.array arr_of_floats):
  # divide integers by floats
  result = arr_of_ints / arr_of_floats

如何才能做到这一点?谢谢。

4

1 回答 1

2

这是一个我很快就完成的例子。

import cython
import numpy as np
cimport numpy as np

@cython.boundscheck(False)
def divide(np.ndarray[np.float_t, ndim=1] numer,
           np.ndarray[np.int_t, ndim=1] denom):
    cdef:
        int n = min(numer.shape[0], denom.shape[1])
        np.ndarray[np.float_t, ndim=1] result = np.empty(n, dtype=float)

    for i in range(n):
        result[i] = numer[i] / denom[i]

    return result

我相信上面的大部分内容都包含在您问题的链接中,但如果您不明白其中任何内容,请询问。

于 2013-04-16T01:38:04.473 回答