2014-10-01 276 views
0

我有8个数组,当每个数组被绘制时,它给出'x Vs.检测概率“。我想结合这些数组,以便我可以执行多维插值来查找每个维度中变量的检测概率。创建多维数组并在Python中进行插值

这里有几个我的数组为例。

In [3]: mag_rec 
Out[3]: 
array([[ 1.35000000e+01, 0.00000000e+00], 
    [ 1.38333333e+01, 5.38461538e-01], 
    [ 1.41666667e+01, 5.84158416e-01], 
    [ 1.45000000e+01, 6.93771626e-01], 
    [ 1.48333333e+01, 7.43629344e-01], 
    [ 1.51666667e+01, 8.30774480e-01], 
    [ 1.55000000e+01, 8.74700571e-01], 
    [ 1.58333333e+01, 8.84866920e-01], 
    [ 1.61666667e+01, 8.95135908e-01], 
    [ 1.65000000e+01, 8.97150997e-01], 
    [ 1.68333333e+01, 8.90416846e-01], 
    [ 1.71666667e+01, 8.90911598e-01], 
    [ 1.75000000e+01, 8.90111460e-01], 
    [ 1.78333333e+01, 8.89567069e-01], 
    [ 1.81666667e+01, 8.82184730e-01], 
    [ 1.85000000e+01, 8.76020265e-01], 
    [ 1.88333333e+01, 8.54947843e-01], 
    [ 1.91666667e+01, 8.43505477e-01], 
    [ 1.95000000e+01, 8.24739363e-01], 
    [ 1.98333333e+01, 7.70070922e-01], 
    [ 2.01666667e+01, 6.33006993e-01], 
    [ 2.05000000e+01, 4.45367502e-01], 
    [ 2.08333333e+01, 2.65029636e-01], 
    [ 2.11666667e+01, 1.22023390e-01], 
    [ 2.15000000e+01, 4.02201524e-02], 
    [ 2.18333333e+01, 1.51190986e-02], 
    [ 2.21666667e+01, 8.75088215e-03], 
    [ 2.25000000e+01, 4.39466969e-03], 
    [ 2.28333333e+01, 3.65476525e-03]]) 

In [5]: lmt_mag 
Out[5]: 
array([[ 16.325  , 0.35  ], 
    [ 16.54166667, 0.39583333], 
    [ 16.75833333, 0.35555556], 
    [ 16.975  , 0.29666667], 
    [ 17.19166667, 0.42222222], 
    [ 17.40833333, 0.38541667], 
    [ 17.625  , 0.4875 ], 
    [ 17.84166667, 0.41956242], 
    [ 18.05833333, 0.45333333], 
    [ 18.275  , 0.45980392], 
    [ 18.49166667, 0.46742424], 
    [ 18.70833333, 0.4952381 ], 
    [ 18.925  , 0.49423077], 
    [ 19.14166667, 0.53375 ], 
    [ 19.35833333, 0.56239316], 
    [ 19.575  , 0.52217391], 
    [ 19.79166667, 0.55590909], 
    [ 20.00833333, 0.57421227], 
    [ 20.225  , 0.5729304 ], 
    [ 20.44166667, 0.61708204], 
    [ 20.65833333, 0.63968037], 
    [ 20.875  , 0.65627395], 
    [ 21.09166667, 0.66177885], 
    [ 21.30833333, 0.69375 ], 
    [ 21.525  , 0.67083333], 
    [ 21.95833333, 0.88333333], 
    [ 22.175  , 0.85833333]]) 

如何,在Python,我会去这些阵列组合成一个多维数组? (更多的阵列将不得不包括在内)

除此之外,一旦我有这个多维数组,是scipy.ndimage.interpolation.map_coordinates内插这个最快的方法?

回答

0

你可以numpy.concatenate((a1, a2, ...), axis=0) 和REDIMENSION numpy串连您的阵列有一些不同的功能HERE,你可以使用它们根据您的需要!

e.g演示:

>>> import numpy as np 
>>> a = np.array([[1, 2], [3, 4]]) 
>>> b = np.array([[5, 6]]) 
>>> np.concatenate((a, b), axis=0) 
array([[1, 2], 
     [3, 4], 
     [5, 6]]) 

>>> np.expand_dims(y, axis=0) 
array([[[1, 2], 
     [3, 4], 
     [5, 6]]]) 
>>> np.expand_dims(y, axis=2) 
array([[[1], 
     [2]], 

     [[3], 
     [4]], 

     [[5], 
     [6]]])