2013-07-11 4 views
7

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

डेटा के लिए एक टुकड़े टुकड़े को फ़ंक्शन करने के बजाय और फिर इसे एकीकृत करने का प्रयास करने के बजाय, जिसमें मुझे परेशानी हो रही है, क्या मैं ऐसा कुछ उपयोग कर सकता हूं जो केवल सरणी का मूल्यांकन करके अभिन्न प्रदान करेगा?

समाधानों की खोज करते समय, मैंने iPython और Pandas के संदर्भ देखे हैं, लेकिन मैं उन कार्यों के उन हिस्सों को खोजने में सक्षम नहीं हूं जो इस कार्य में सहायता करेंगे।

यदि सरणी को एकीकृत करने का कोई तरीका नहीं है, तो क्या आप इस कार्य को संभालने के सर्वोत्तम तरीके पर कुछ सलाह दे सकते हैं?

उत्तर

9

Scipy has some nice tools to perform numerical integration.

उदाहरण के लिए, आप scipy.integrate.simps का उपयोग सिम्पसन शासन प्रदर्शन करने के लिए कर सकते हैं, और आप इसे निम्नलिखित पारित कर सकते हैं:

scipy.integrate.simps (y, x = कोई नहीं, dx = 1 , अक्ष = -1, यहां तक ​​कि = 'औसत')

पैरामीटर:
y: array_like सरणी एकीकृत किया जा करने के लिए।

x: array_like, वैकल्पिक यदि दिया गया है, तो जिन बिंदुओं पर y नमूना है।

डीएक्स: int, वैकल्पिक वाई अक्ष के साथ एकीकरण बिंदुओं का अंतर। केवल तब उपयोग किया जाता है जब एक्स कोई नहीं होता है। डिफ़ॉल्ट है 1.

धुरी: int, वैकल्पिक अक्ष जो एकीकृत करने के लिए। डिफ़ॉल्ट अंतिम अक्ष है।

भी: { 'औसत', 'पहले', 'str'}, वैकल्पिक

'औसत': औसत दो परिणाम: 1) पहली एन -2 अंतराल के साथ एक समलम्बाकार नियम पिछले पर उपयोग अंतराल और 2) पहले अंतराल पर एक ट्रैपेज़ॉयडल नियम के साथ अंतिम एन -2 अंतराल का उपयोग करें।

'पहला': पिछले अंतराल पर के साथ पहले एन-2 अंतराल के लिए सिम्पसन के नियम का उपयोग करें, अंतिम अंतराल पर एक ट्रैपेज़ॉयडल नियम।

'आखिरी': पहले अंतराल पर ट्रैपेज़ॉयडल नियम के साथ अंतिम एन -2 अंतराल के लिए सिम्पसन के नियम का उपयोग करें।

तो आप संख्यात्मक एकीकरण करने के लिए अपने दो सरणी का उपयोग कर सकते हैं।

5

Scipy में integration सुविधा है जो आपकी मदद कर सकती है।

यदि आप एकीकरण के लिए cumulative sum of trapezoids का उपयोग करना चाहते हैं, जो शायद अंक की एक श्रृंखला के लिए सबसे अच्छा होगा।

आप ऐसा कर सकते हैं:

>>> from scipy import integrate 
>>> x = np.linspace(-2, 2, num=20) 
>>> y = x 
>>> y_int = integrate.cumtrapz(y, x, initial=0) 
>>> plt.plot(x, y_int, 'ro', x, y[0] + 0.5 * x**2, 'b-') 
>>> plt.show() 

यह भी डेटा प्लॉट और आप के लिए यह रेखांकन दिखाएगा।यह एकीकरण कॉल integrate.cumtrapz(y, x, initial=0) है जहां x, और y आपके दो सरणी हैं।

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