2014-01-07 10 views
6

cythonでのmemoryviewについては、numpy floatを使用している場合はdoubleの代わりにnp.float_tなどのNumPy型のビューを入力する利点がありますアレイ?Cython:型付きメモリビューにdouble型ではなくnp.float_tを使用する必要があります

また、eと同じ方法でcdefと入力する必要があります。 g。あなたはcythonに含まれてnumpyのヘッダファイルを見ると

ctypedef np.float64_t np_float_t 
... 

@cython.profile(False) 
@cython.wraparound(False) 
@cython.boundscheck(False) 
cdef np_float_t mean_1d(np_float_t [:] v) nogil: 
    cdef unsigned int n = v.shape[0] 
    cdef np_float_t n_sum = 0. 

    cdef Py_ssize_t i 
    for i in range(n): 
     n_sum += v[i] 

    return n_sum/n 

答えて

11

(例えばマスターブランチで、それは__init__.pxdである)、あなたは

ctypedef double  npy_double 

ctypedef npy_double  float_t 

でを見つけることができます言い換えれば、float_tdoubleですので、np.float_tを使用するのには利点はありません。

+0

私はそれを見つけました.. line 311/758:|型の使用法については、(なぜ/いつ)の索引付けにPy_ssize_tを使用するのが望ましいですか? (私が見つけた文書では、#Puristsは配列インデックスのPython型であるPy_ssize_tを使用することができました。 ') - > NumPy/Cython-Array(s)/ – embert

+0

コメントの代わりに、 'Py_ssize_t'の使用に関する新しい質問を開始する必要があります。それはそれが最も露出を得ることを保証するでしょう。 –

+1

あなたはそうです。他の回答者にも簡単に見つけることができます。私は、それが独立した質問をする価値があるかどうか、大抵は疑わしいです。しかし、私は今からそうしようとしています – embert

関連する問題