2

Cython の関数は、異なる型の 2 つの numpy 配列 (たとえば、int の 1 つの配列、float のもう 1 つの配列) を引数としてどのように受け取ることができますか? ここの例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 に答える