संपादित करें: पॉल ने इसे नीचे हल किया है। धन्यवाद!Scipy इंटरपोलेशन कैसे 3x3 मैट्रिक्स का आकार बदलने/resx करने के लिए 5x5 करने के लिए?
मैं 5x5 पर 3x3 मैट्रिक्स को दोहराने (अपस्केल) करने की कोशिश कर रहा हूं, इंटरमीडिएट पॉइंट्स को इंटरपोलेट.inटरपी 2 डी या इंटरपोलेट के साथ भरने की कोशिश कर रहा हूं। RectBivariateSpline (या जो भी काम करता है)।
यदि ऐसा करने के लिए एक सरल, मौजूदा फ़ंक्शन है, तो मैं इसका उपयोग करना चाहता हूं, लेकिन मुझे अभी तक यह नहीं मिला है। उदाहरण के लिए, एक समारोह की तरह काम करेगा:
# upscale 2x2 to 4x4
matrixSmall = ([[-1,8],[3,5]])
matrixBig = matrixSmall.resample(4,4,cubic)
तो, अगर मैं एक 3x3 मैट्रिक्स/सरणी के साथ शुरू:
0,-2,0
-2,11,-2
0,-2,0
मैं एक नया 5x5 मैट्रिक्स गणना करने के लिए चाहते हैं ("मैं" जिसका अर्थ अंतर्वेशित मूल्य):
0, I[1,0], -2, I[3,0], 0
I[0,1], I[1,1], I[2,1], I[3,1], I[4,1]
-2, I[1,2], 11, I[3,2], -2
I[0,3], I[1,3], I[2,3], I[3,3], I[4,3]
0, I[1,4], -2, I[3,4], 0
मैं खोज किया गया है और ऊपर पढ़ रहे हैं और विभिन्न विभिन्न परीक्षण कोड की कोशिश कर रहा है, लेकिन मैं काफी मैं क्या कर रहा हूँ के लिए सही सिंटैक्स पता लगा नहीं किया है। मुझे यह भी यकीन नहीं है कि मुझे कुछ लाइनों में मेष्रिड, मैग्रिड या लिन्स स्पेस का उपयोग करने की आवश्यकता है या नहीं।
संपादित करें: फिक्स्ड और काम पॉल के लिए धन्यवाद
import numpy, scipy
from scipy import interpolate
kernelIn = numpy.array([[0,-2,0],
[-2,11,-2],
[0,-2,0]])
inKSize = len(kernelIn)
outKSize = 5
kernelOut = numpy.zeros((outKSize,outKSize),numpy.uint8)
x = numpy.array([0,1,2])
y = numpy.array([0,1,2])
z = kernelIn
xx = numpy.linspace(x.min(),x.max(),outKSize)
yy = numpy.linspace(y.min(),y.max(),outKSize)
newKernel = interpolate.RectBivariateSpline(x,y,z, kx=2,ky=2)
kernelOut = newKernel(xx,yy)
print kernelOut
त्वरित समाधान के लिए बहुत बहुत धन्यवाद! यही वही है जो मैं ढूंढ रहा था। मैंने पहले लिन्स स्पेस की कोशिश की थी, लेकिन गलत स्वरूपण के साथ और मैं पूरी तरह से केएक्स, केई याद किया। – moski