jorge.conr...@cptec.inpe.br wrote:

> I use the IDL but now I'm change to PYTHON. I have a 4D array (time,
> level,lon,lat). I would like to get a 2D array for a specific time
> (time1) and level (level1). In IDL I use: 2Darray =
> 4Darray(time1,level1,*,*). How can I get the 2D array in Python

With numpy you can use slicing.

Create a 4D array with pointless data in it:

>>> import numpy
>>> a = numpy.arange(2*3*4*5).reshape((2, 3, 4, 5))
>>> a
array([[[[  0,   1,   2,   3,   4],
         [  5,   6,   7,   8,   9],
         [ 10,  11,  12,  13,  14],
         [ 15,  16,  17,  18,  19]],

        [[ 20,  21,  22,  23,  24],
         [ 25,  26,  27,  28,  29],
         [ 30,  31,  32,  33,  34],
         [ 35,  36,  37,  38,  39]],

        [[ 40,  41,  42,  43,  44],
         [ 45,  46,  47,  48,  49],
         [ 50,  51,  52,  53,  54],
         [ 55,  56,  57,  58,  59]]],


       [[[ 60,  61,  62,  63,  64],
         [ 65,  66,  67,  68,  69],
         [ 70,  71,  72,  73,  74],
         [ 75,  76,  77,  78,  79]],

        [[ 80,  81,  82,  83,  84],
         [ 85,  86,  87,  88,  89],
         [ 90,  91,  92,  93,  94],
         [ 95,  96,  97,  98,  99]],

        [[100, 101, 102, 103, 104],
         [105, 106, 107, 108, 109],
         [110, 111, 112, 113, 114],
         [115, 116, 117, 118, 119]]]])

Extract 2D arrays:

>>> a[:,2,3]
array([[ 55,  56,  57,  58,  59],
       [115, 116, 117, 118, 119]])
>>> a[1,:,2]
array([[ 70,  71,  72,  73,  74],
       [ 90,  91,  92,  93,  94],
       [110, 111, 112, 113, 114]])


-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to