2014-01-07 60 views
6

關於cython中的內存視圖,是否有任何鍵入與NumPy類型的視圖,如np.float_t而不是簡單地做double如果我使用numpy浮動數組?Cython:我應該使用np.float_t而不是雙重的鍵入內存視圖

而且我應該輸入cdef然後以同樣的方式做e。 G。

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

如果您在包含用Cython的numpy的頭文件查找(例如,在主分支,它是__init__.pxd),你會發現

ctypedef double  npy_double 

ctypedef npy_double  float_t 

在換句話說,float_tdouble,因此使用np.float_t應該沒有優勢。

+0

我發現它..行311/758:|和我們正在使用的類型:(Why/When)是否最好使用Py_ssize_t進行索引? (在我剛剛發現的文檔中##純粹主義者可以使用「Py_ssize_t」,這是適合於數組索引的Python類型。) - >當索引NumPy/Cython-Array(s)/ - 查看任何內容時,這意味着什麼。 – embert

+0

而不是評論,你應該開始一個關於使用'Py_ssize_t'的新問題。這將確保它獲得最大的曝光度。 –

+1

你說得對。更容易找到其他回答者。我懷疑是否值得從中提出一個獨立的問題。但是,從現在開始,我會努力做到這一點 – embert

相關問題