यहां मेरी समस्या है: मैं 432*46*136*136
ग्रिड को time*(space)
का प्रतिनिधित्व करता हूं जो numpy और python के साथ numpy arrays में शामिल है। मेरे पास एक सरणी alt
है, जिसमें ग्रिड पॉइंट्स की ऊंचाई शामिल है, और एक और सरणी temp
जो ग्रिड पॉइंट्स का तापमान संग्रहीत करती है।सार्वभौमिक कार्यों का उपयोग करके पाइथन numpy ग्रिड परिवर्तन
यह एक तुलना के लिए समस्याग्रस्त है: अगर T1
और T2
हैं दो परिणाम, T1[t0,z0,x0,y0]
और T2[t0,z0,x0,y0]
, H1[t0,z0,x0,y0]
और मीटर की दूरी पर तापमान का प्रतिनिधित्व क्रमश। लेकिन मैं एक ही ऊंचाई पर बिंदुओं के तापमान की तुलना करना चाहता हूं, न कि एक ही ग्रिड बिंदु पर।
इसलिए मैं ऊंचाई का प्रतिनिधित्व करने के लिए मेरी ग्रिडिस के जेड-अक्ष को संशोधित करना चाहता हूं, न कि ग्रिड बिंदु। मैं एक समारोह conv(alt[t,z,x,y])
बनाता हूं जो प्रत्येक ऊंचाई पर -20 और 200 के बीच एक संख्या को विशेषता देता है। यहां मेरा कोड है:
def interpolation_extended(self,temp,alt):
[t,z,x,y]=temp.shape
new=np.zeros([t,220,x,y])
for l in range(0,t):
for j in range(0,z):
for lat in range(0,x):
for lon in range(0,y):
new[l,conv(alt[l,j,lat,lon]),lat,lon]=temp[l,j,lat,lon]
return new
लेकिन यह निश्चित रूप से बहुत अधिक समय लेता है, मैं इसे काम नहीं कर सकता। मैंने numpy के साथ सार्वभौमिक कार्यों का उपयोग करके इसे लिखने की कोशिश की:
def interpolation_extended(self,temp,alt):
[t,z,x,y]=temp.shape
new=np.zeros([t,220,x,y])
for j in range(0,z):
new[:,conv(alt[:,j,:,:]),:,:]=temp[:,j,:,:]
return new
लेकिन यह काम नहीं करता है। क्या आपको 4 नेस्टेड लूपों का उपयोग किये बिना पायथन/numpy में ऐसा करने का कोई विचार है?
धन्यवाद
ऐसा इसलिए हो सकता है क्योंकि पाइथन में फ़ंक्शन कॉल महंगा हैं। उदाहरण के साथ 'रूपांतरण' समन्वय को पूर्ववत करना 'सेफंक्शन 'numpy विधि मदद कर सकता है। – Ashalynd
क्या ज़ेड 220 से बड़ा है? अगर ऐसा है तो मैं देख सकता हूं कि आपका कोड क्यों दुर्घटनाग्रस्त हो जाएगा। – jfish003
'alt' का कोई रैखिक संयोजन/कार्य 'conv' है? क्या आप उदाहरण दे सकते हैं या अपना कोड 'conv' के लिए पोस्ट कर सकते हैं? यदि 'रूपांतरण' को सदिशित किया जा सकता है, तो आप इसे 1 लाइनर में लिख सकते हैं। –