Tôi đang học Cython. Tôi có vấn đề với việc đi qua mảng numpy để Cython và không thực sự hiểu những gì đang xảy ra. Bạn có thể giúp tôi?Chuyển mảng numpy sang Cython
Tôi có hai mảng đơn giản:
a = np.array([1,2])
b = np.array([[1,4],[3,4]])
Tôi muốn tính toán một dấu chấm sản phẩm của họ. Trong python/NumPy tất cả mọi thứ hoạt động tốt:
>>> np.dot(a,b)
array([ 7, 12])
tôi dịch mã để Cython (như ở đây: 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
Nó được biên soạn với không có vấn đề nhưng trả về một lỗi:
>>> 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
Bạn có thể cho tôi biết lý do và cách thực hiện chính xác không? Rất tiếc, Google không hữu ích ...
Cảm ơn!
Câu hỏi liên quan đến tập lệnh của OP: là các dòng có 'DTYPE' và' ctypedef' thực sự cần thiết cho ví dụ này? Chúng có phải là cờ được sử dụng trong nội bộ một nơi nào đó không? –