Python - Interpolation 2D array for huge arrays

后端 未结 1 1331
挽巷
挽巷 2020-12-19 16:40

I would like to interpolate 2D array \"test\" whose dimensions are 4x4 (just as example, in reality close to 1000x1000) with a grid of shape 8x8.

import nump         


        
相关标签:
1条回答
  • 2020-12-19 17:21

    you can do this with scipy.interpolate.interp2d and numpy.meshgrid.

    You need to make sure your new X and Y ranges go over the same range as the old ones, just with a smaller stepsize. This is easy with np.linspace:

    import numpy as np
    from scipy import interpolate
    
    mymin,mymax = 0,3
    X = np.linspace(mymin,mymax,4)
    Y = np.linspace(mymin,mymax,4)
    
    x,y = np.meshgrid(X,Y)
    
    test = np.array([[ 1.2514318 ,  1.25145821,  1.25148472,  1.25151133],
           [ 1.25087456,  1.25090105,  1.25092764,  1.25095435],
           [ 1.25031581,  1.25034238,  1.25036907,  1.25039586],
           [ 1.24975557,  1.24978222,  1.24980898,  1.24983587]])
    
    f = interpolate.interp2d(x,y,test,kind='cubic')
    
    # use linspace so your new range also goes from 0 to 3, with 8 intervals
    Xnew = np.linspace(mymin,mymax,8)
    Ynew = np.linspace(mymin,mymax,8)
    
    test8x8 = f(Xnew,Ynew)
    
    print test8x8
    >>> [[ 1.2514318   1.25144311  1.25145443  1.25146577  1.25147714  1.25148852  1.25149991  1.25151133]
         [ 1.25119317  1.25120449  1.25121583  1.25122719  1.25123856  1.25124995  1.25126137  1.25127281]
         [ 1.25095426  1.2509656   1.25097695  1.25098832  1.25099971  1.25101112  1.25102255  1.25103401]
         [ 1.25071507  1.25072642  1.25073779  1.25074918  1.25076059  1.25077201  1.25078346  1.25079494]
         [ 1.25047561  1.25048697  1.25049835  1.25050976  1.25052119  1.25053263  1.2505441   1.25055558]
         [ 1.25023587  1.25024724  1.25025864  1.25027007  1.25028151  1.25029297  1.25030446  1.25031595]
         [ 1.24999585  1.25000724  1.25001866  1.2500301   1.25004156  1.25005304  1.25006453  1.25007605]
         [ 1.24975557  1.24976698  1.24977841  1.24978985  1.24980132  1.24981281  1.24982433  1.24983587]] 
    
    0 讨论(0)
提交回复
热议问题