5

मैं एक सहकर्मी आईडीएल कोड को पाइथन में फिर से लिखने की प्रक्रिया में हूं और कुछ अंतरों के साथ आ रहा हूं जिनके बारे में मैं उलझन में हूं। अन्य SO प्रश्नों और मेलिंग सूची धागे के अनुसार मैंने पाया है कि यदि आप scipy.ndimage.interpolation.map_coordinates का उपयोग करते हैं और order=1 निर्दिष्ट करते हैं तो यह बिलीनेर इंटरपोलेशन करना है। आईडीएल कोड (जीडीएल में चलाएं) और पायथन (map_coordinates) के बीच परिणामों की तुलना करते समय मुझे अलग-अलग परिणाम मिलते हैं। तब मैंने mpl_toolkits.basemap.interp का उपयोग करने की कोशिश की और मुझे आईडीएल कोड के समान परिणाम मिला। नीचे एक साधारण उदाहरण है जो दिखाता है कि क्या गलत है। क्या कोई मुझे यह जानने में मदद कर सकता है कि मैं map_coordinates के साथ क्या गलत कर रहा हूं या order=1 बिलीनेर नहीं है?एसपीपी मैप_कोर्डिनेट्स इंटरपोल और आईडीएल इंटरपोलेट की तुलना में बिलीनेर इंटरपोलेशन

from scipy.ndimage.interpolation import map_coordinates 
from mpl_toolkits.basemap import interp 
import numpy 

in_data = numpy.array([[ 25.89125824, 25.88840675],[ 25.90930748, 25.90640068]], dtype=numpy.float32) 

map_coordinates(in_data, [[0.0],[0.125]], order=1, mode='nearest') 
# map_coordinates results in "25.89090157" 
interp(in_data, numpy.array([0,1]), numpy.array([0,1]), numpy.array([0.0]), numpy.array([0.125]), order=1) 
# interp results in "25.89351439", same as GDL's "25.8935" when printed 

मैं बिल्कुल ठीक interp उपयोग कर रहा हूँ, लेकिन मैं उत्सुक था क्यों map_coordinates एक ही परिणाम नहीं लौटा। मैंने देखा कि map_coordinates दस्तावेज़ीकरण में बिलीनेर का उल्लेख नहीं है, क्या यह वास्तव में बिलीनेर है? मैं क्या खो रहा हूँ?

उत्तर

7

map_coordinates का उपयोग करते समय, आपको सरणी को स्थानांतरित करने या आपको (y, x) प्रारूप में समन्वयित करने की आवश्यकता होती है, क्योंकि सरणी का आकार (height, width) है।

from scipy.ndimage.interpolation import map_coordinates 
from mpl_toolkits.basemap import interp 
import numpy 

in_data = numpy.array([[ 25.89125824, 25.88840675],[ 25.90930748, 25.90640068]], dtype=numpy.float32) 

print map_coordinates(in_data.T, [[0.0],[0.125]], order=1, mode='nearest') 
print interp(in_data, numpy.array([0,1]), numpy.array([0,1]), numpy.array([0.0]), numpy.array([0.125]), order=1) 

हो जाएगा ताकि उत्पादन:

[ 25.89351463] 
[ 25.89351439] 
+0

वाह, मैं विश्वास नहीं कर सकता कि मैं उस के बारे में सोच नहीं किया। मैंने सोचा कि मैंने कोशिश की है, बहुत बहुत धन्यवाद। – daveydave400

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