2013-05-24 9 views
6

का अंतराल औसत मेरे पास दो 1 डी सरणी हैं, एक मापा डेटा के लिए और दूसरा स्थान के लिए।1 डी डेटा

temp = np.asarray([10, 9.6, 9.3, ..., -20.3, -21.0]) # Temperature in celsius 
height = np.asarray([129, 145, 167, ..., 5043, 5112]) # Height in meters 

आप देख सकते हैं, माप की ऊंचाई नियमित स्थान नहीं है: उदाहरण के लिए, मापा डेटा तापमान और अन्य सरणी माप की ऊंचाई हो सकता है।

मैं नियमित रूप से दूरी वाले अंतराल में औसत तापमान की गणना करना चाहता हूं। यह किसी प्रकार का चलती औसत है, लेकिन खिड़की का आकार परिवर्तनीय है, क्योंकि ब्याज के अंतराल के अंदर डेटा बिंदु हमेशा समान नहीं होता है।

यह निम्नलिखित तरीके से पाश के लिए एक साथ किया जा सकता है:

regular_heights = np.arange(0, 6000, 100) # Regular heights every 100m 
regular_temps = [] 

for i in range(len(regular_heights)-1): 
    mask = np.logical_and(height > regular_heights[i], height < regular_heights[i+1]) 
    mean = np.mean(temp[mask]) 
    regular_temps.append(mean) 

regular_temps = np.hstack((regular_temps)) 

मैं इस दृष्टिकोण पसंद नहीं है कि ज्यादा और अगर वहाँ एक और अधिक "numpy शैली" समाधान होगा मैं सोच रहा था।

+0

आप एक "चलती औसत" या "मतलब नियमित स्थान के अंतराल में अस्थायी" करना चाहते हैं? यही है, यदि आपके पास एन अंतराल है, तो आप एन औसत चाहते हैं, या आप एक चलती खिड़की का उपयोग करके निरंतर औसत चाहते हैं (जो प्रत्येक स्थान पर ऊंचाई की एक सीमा फैलता है)? – tom10

+0

जैसा कि मैंने अपने कमनेट में @elyase के जवाब में कहा है, मुझे शायद पहले नियमित अंतराल अंतराल में एक मतलब डालना होगा और फिर इसे एक स्पलीन के साथ चिकनी बनाना होगा। हालांकि, एक चलती औसत एक स्पलीन के साथ संयोजन में भी अच्छा हो सकता है। –

उत्तर

3

आप शायद UnivariateSpline खोज रहे हैं।

from scipy.interpolate import UnivariateSpline 

temp = np.asarray([10, 9.6, 9.3, 9.0, 8.7]) # Temperature in celsius 
height = np.asarray([129, 145, 167, 190, 213]) # Height in meters 
f = UnivariateSpline(height, temp) 

अब आप f मूल्यांकन कर सकते हैं जहाँ भी आप चाहते हैं: उदाहरण के लिए:

regular_heights = np.arange(120, 213, 5)  # Regular heights every 5m 
plot(height, temp, 'o', regular_heights, f(regular_heights), 'x') 

enter image description here

+1

'f (regular_heights)' उन बिंदुओं पर इंटरपोलेटेड मान देता है। ओपी ने क्या नहीं पूछा - ऊंचाई अंतराल के भीतर मूल्यों का मतलब। – mg007

+0

मुझे पता है कि उन्होंने 'मतलब' का उल्लेख किया है, लेकिन एक अस्पष्ट तरीके से (क्या मतलब है?)। ऐसा लगता है कि वह वास्तव में वह चाहता है, यही कारण है कि मैंने कहा 'शायद खोज रहे हैं ...'। यदि आप चाहते हैं कि आप उत्तर के साथ एक उत्तर पोस्ट कर सकें, तो मुझे लगता है कि हम आखिरकार पता लगाएंगे कि वह क्या कर रहा है। – elyase

+0

'यूनिवर्सेटस्पलाइन' लंबवत प्रोफ़ाइल में लिया गया डेटा के लिए ठीक है, हालांकि, मेरे मामले में, डेटा अलग-अलग स्थानों पर एक साथ लिया जाता है, मान बहुत अलग होते हैं। शायद मेरे समाधान को दोनों दृष्टिकोणों के संयोजन की आवश्यकता है, पहले नियमित रूप से दूरी वाले डेटासेट प्राप्त करने के लिए औसत और एक चिकनी वक्र प्राप्त करने के लिए एक स्पलीन लागू करें। –

संबंधित मुद्दे