7
我正在學習Cython。我在將numpy數組傳遞給Cython時遇到了問題,並且不太瞭解發生了什麼。你可以幫幫我嗎?傳遞numpy數組到Cython
我有兩個簡單數組:
a = np.array([1,2])
b = np.array([[1,4],[3,4]])
我要計算它們的點積。在Python/numpy的一切工作正常:
>>> np.dot(a,b)
array([ 7, 12])
我翻譯的代碼,用Cython(如下:http://docs.cython.org/src/tutorial/numpy.html):
import numpy as np
cimport numpy as np
DTYPE = np.int
ctypedef np.int_t DTYPE_t
def dot(np.ndarray a, np.ndarray b):
cdef int d = np.dot(a, b)
return d
它編譯沒有問題,但返回一個錯誤:
>>> dot(a,b)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "test.pyx", line 8, in test.dot (test.c:1262)
cdef int d = np.dot(a, b)
TypeError: only length-1 arrays can be converted to Python scalars
你能告訴我爲什麼以及如何正確地做到這一點?不幸的是谷歌沒有幫助...
謝謝!
更多與OP腳本相關的問題:本例中實際上需要'DTYPE'和'ctypedef'的行嗎?他們的標誌在內部使用嗎? –