pythonarraysloopsmultidimensional-arraykurtosis

calculating kurtosis and skew for every array in a 4d array


I have a 4d array of arrays where for example, a[0] looks like this :

array([[[135, 105,  95],
        [109,  78,  60],
        [101,  78,  54],
        ...,
        [ 32,  21,  22],
        [ 32,  21,  23],
        [ 35,  28,  31]],

       [[144, 119, 107],
        [117,  87,  68],
        [115,  94,  74],
        ...,
        [ 32,  21,  22],
        [ 33,  22,  24],
        [ 33,  22,  26]],

       [[145, 127, 113],
        [140, 116, 102],
        [128, 104,  87],
        ...,
        [ 29,  22,  20],
        [ 28,  21,  19],
        [ 33,  23,  20]],

       ...,

       [[105,  70,  62],
        [109,  81,  75],
        [142, 123, 117],
        ...,
        [ 52,  41,  39],
        [ 62,  49,  47],
        [ 52,  38,  33]],

       [[ 90,  55,  50],
        [ 96,  67,  65],
        [133, 111, 108],
        ...,
        [ 45,  37,  34],
        [ 48,  36,  32],
        [ 48,  37,  30]],

       [[129, 111, 106],
        [124, 103, 101],
        [116,  94,  90],
        ...,
        [ 50,  40,  35],
        [ 53,  39,  35],
        [ 48,  37,  32]]], dtype=uint8)

Every array in the 4d array of arrays represents an image (pixels). I want to calculate kurtosis for every array in the 4d array by using a loop. So, could someone please help me with this? Thanks in advance for your help


Solution

  • Without having an example, you could try something similar to this:

    from scipy.stats import kurtosis
    k = []
    for elem in a:
        k.append(kurtosis(elem))
    

    This will output an array. If you want to output a single number, you should set axis=None when calling kurtosis().