मैं एक न्यूमपी सदस्य के साथ एक साइथन "सीडीएफ" ऑब्जेक्ट रखना चाहता हूं, और तेज़ बफर एक्सेस का उपयोग करने में सक्षम हूं।ऑब्जेक्ट सदस्यों के लिए साइथन बफर घोषणाएं
import numpy as np
cimport numpy as np
cdef class Model:
cdef np.ndarray[np.int_t, ndim=1] A
def sum(self):
cdef int i, s=0, N=len(self.A)
for 0 <= i < N:
s += self.A[i]
return s
def __init__(self):
self.A = np.arange(1000)
दुर्भाग्य से, Cython इस त्रुटि Buffer types only allowed as function local variables
साथ संकलन नहीं कर सकते,: आदर्श रूप में, मैं कुछ की तरह करना होगा।
वैकल्पिक हल मैं उपयोग कर रहा हूँ बफर घोषित करने के लिए है एक नया स्थानीय चर पर जिम्मेदार बताते हैं, वस्तु सदस्य को सौंपा:
cdef class Model:
cdef np.ndarray A
def sum(self):
cdef int i, s=0, N=len(self.A)
cdef np.ndarray[np.int_t, ndim=1] A = self.A
for 0 <= i < N:
s += A[i]
return s
यह वास्तव में कष्टप्रद हो जाता है अगर आप एक ही डेटा तक पहुँचने के लिए कई तरीकों करना चाहते हैं संरचनाएं - जो एक बहुत ही सामान्य उपयोग मामले की तरह दिखती हैं, नहीं?
क्या कोई बेहतर समाधान है जिसके लिए प्रत्येक विधि के भीतर प्रकारों को फिर से घोषित करने की आवश्यकता नहीं है?
अद्यतन के साथ काम करने का विकल्प भी नहीं है लिंक http://www.mail-archive.com/[email protected]/msg05166.html – gg349
क्या यह प्रदर्शन खो सकता है? – machen