Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

numpy array directional mean without dimension reduction

How would I do the following:
With a 3D numpy array I want to take the mean in one dimension and assign the values back to a 3D array with the same shape, with duplicate values of the means in the direction they were derived...
I'm struggling to work out an example in 3D but in 2D (4x4) it would look a bit like this I guess

array[[1, 1, 2, 2]     
      [2, 2, 1, 0]  
      [1, 1, 2, 2]  
      [4, 8, 3, 0]] 

becomes

array[[2, 3, 2, 1]     
      [2, 3, 2, 1]  
      [2, 3, 2, 1]  
      [2, 3, 2, 1]]   

I'm struggling with the np.mean and the loss of dimensions when take an average.

like image 457
idem Avatar asked Sep 19 '25 02:09

idem


1 Answers

You can use the keepdims keyword argument to keep that vanishing dimension, e.g.:

>>> a = np.random.randint(10, size=(4, 4)).astype(np.double)
>>> a
array([[ 7.,  9.,  9.,  7.],
       [ 7.,  1.,  3.,  4.],
       [ 9.,  5.,  9.,  0.],
       [ 6.,  9.,  1.,  5.]])
>>> a[:] = np.mean(a, axis=0, keepdims=True)
>>> a
array([[ 7.25,  6.  ,  5.5 ,  4.  ],
       [ 7.25,  6.  ,  5.5 ,  4.  ],
       [ 7.25,  6.  ,  5.5 ,  4.  ],
       [ 7.25,  6.  ,  5.5 ,  4.  ]])
like image 63
Jaime Avatar answered Sep 20 '25 17:09

Jaime