पर numpy सरणी पास करना मैं साइथन सीख रहा हूँ। मुझे साइथन के लिए numpy arrays गुजरने में समस्या है और वास्तव में समझ में नहीं आता कि क्या हो रहा है। क्या तुम मेरी मदद कर सकते हो?साइथन
a = np.array([1,2])
b = np.array([[1,4],[3,4]])
मैं उनमें से एक डॉट उत्पाद की गणना करना चाहते हैं:
मैं दो सरल सरणियों की है। (यहाँ के रूप में: http://docs.cython.org/src/tutorial/numpy.html):
>>> np.dot(a,b)
array([ 7, 12])
मैं Cython करने के लिए कोड अनुवाद: अजगर में/numpy सब कुछ ठीक काम करता है
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
क्या आप मुझे बता सकते हैं कि यह सही तरीके से क्यों और कैसे करें? दुर्भाग्य से Google सहायक नहीं था ...
धन्यवाद!
ओपी की लिपि से संबंधित एक प्रश्न: क्या इस उदाहरण के लिए वास्तव में आवश्यक 'डीटीईपीई' और 'ctypedef' वाली रेखाएं हैं? क्या वे आंतरिक रूप से कहीं भी इस्तेमाल किए गए झंडे हैं? –