बुनियादी क्यों कि griddata
गुजरता दोनों points
और xi
एक points = _ndim_coords_from_arrays(points)
समारोह जिसका प्रलेखन पढ़ता है के माध्यम से है: tuples पर
Convert a tuple of coordinate arrays to a (..., ndim)-shaped array.
और महत्वपूर्ण कार्य है: और
p = np.broadcast_arrays(*points)
कुछ भी, सूची सहित , सिर्फ एक सरणी में परिवर्तित किया गया है:
points = np.asanyarray(points)
वास्तविक इंटरपोलेशन '3 डी' आयाम के साथ सरणी की अपेक्षा करता है।
तो आपकी सूची 3 (200,200,200)
सरणी (3,200,200,200)
आकार की एक सरणी बन जाती है। लेकिन आपका points
सरणी (50,3)
है। number of dimensions in xi does not match x
200
से संदेश परिणाम 3
से मेल नहीं खाते।
griddata
दस्तावेज points
के बारे में स्पष्ट है, xi
के लिए कम है। लेकिन इसका उदाहरण mgrid
से सरणी का उपयोग करके (x, Y)
का उपयोग करता है।
तो यह काम करेगा:
X, Y, Z = np.meshgrid(*([np.linspace(-1,1,200)] * 3))
interp_vals = scipy.interpolate.griddata(points, values, (X,Y,Z), 'linear')
अपने meshgrid
सूची से आवश्यक सरणी पैदा करने का एक और तरीका है यह एक सरणी बनाने के लिए, और रोल 1 आयाम
grid_vals = np.rollaxis(np.array(grid_vals),0,4)
पैदा करने का एक और तरीका एक जाल np.ix_
है, जो ट्यूपल के रूप में एक खुली जाल देता है। इस तरह के एक खुले जाल प्रसारण की जरूरत है।
एक सिंगल प्वाइंट के साथ अंतर्वेशित किया जाएगा या तो:
interpolate.griddata(points,values,[[[[0,0,0]]]],'linear')
interpolate.griddata(points,values,([0],[0],[0]),'linear')
देखें जॉन 4123
पुल अनुरोध करने के लिए प्रतिक्रिया whys के बारे में अधिक चर्चा है।