【问题标题】:using multiple types of numpy arrays in Cython function?在 Cython 函数中使用多种类型的 numpy 数组?
【发布时间】:2013-04-16 00:18:57
【问题描述】:

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

如何做到这一点?谢谢。

【问题讨论】:

    标签: python numpy scipy cython


    【解决方案1】:

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

    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
    

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

    【讨论】:

    • 谢谢。 “cimport numpy as np”和“cimport numpy as cnp”有什么区别,你将 cnp 和 np 分开?有没有理由调用“cnp.F”,其中 F 是一个函数(如“cnp.empty”)而不是“np.empty”?
    猜你喜欢
    • 1970-01-01
    • 2012-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-29
    • 2014-03-06
    • 1970-01-01
    相关资源
    最近更新 更多