/ / भारित चलती औसत के साथ numpy.convolve - अजगर, गणित, सुन्न

numpy.convolve के साथ भारित चलती औसत - पायथन, गणित, numpy

मैं मूविंग एवरेज फंक्शन लिख रहा हूँ जो कि क्रिस्प में फंक्शन का उपयोग करता है, जो एक के बराबर होना चाहिए (भारित चलती औसत)। जब मेरा वजन सभी के बराबर होता है (एक साधारण गणित औसत के रूप में), यह ठीक काम करता है:

data = numpy.arange(1,11)
numdays = 5
w = [1.0/numdays]*numdays
numpy.convolve(data,w,"valid")

देता है

array([ 3.,  4.,  5.,  6.,  7.,  8.])

हालांकि, जब मैं एक भारित औसत का उपयोग करने की कोशिश करता हूं

w = numpy.cumsum(numpy.ones(numdays,dtype=float),axis=0); w = w/numpy.sum(w)

के बजाय (एक ही डेटा के लिए) 3.667,4.667,5.667,6.667, ... मुझे उम्मीद है, मुझे मिलता है

array([ 2.33333333,  3.33333333,  4.33333333,  5.33333333,  6.33333333,
7.33333333])

यदि मैं "वैध" ध्वज हटाता हूं, तो मैं भी नहीं देखतासही मूल्य। मैं वास्तव में WMA के साथ-साथ MA के लिए कॉन्वोल्यूशन का उपयोग करना चाहूंगा क्योंकि यह कोड क्लीनर (समान कोड, अलग-अलग वज़न) बनाता है और अन्यथा मुझे लगता है कि मुझे सभी डेटा के माध्यम से लूप करना होगा और स्लाइस लेना होगा।

इस व्यवहार के बारे में कोई विचार?

उत्तर:

उत्तर № 1 के लिए 15

आप क्या चाहते हैं np.correlate एक यकीन में दूसरा तर्क मूल रूप से उलटा होता है, ताकि आपका अपेक्षित परिणाम साथ हो np.convolve(data, w[::-1], "valid").