Example of how to downsample a matrix by selecting only one element every $n \times n$ blocks with numpy:

Table of contents

Note: see also previous article how to do downsample a matrix by averaging elements n*n with numpy in python

### Create a matrix

`import numpy as np`

`a = np.random.randint(0,100,(6,6))`

`print(a)`

`print(a.shape)`

returns for example

`[[52 87 50 58 75 59]`

`[27 40 36 50 9 20]`

`[94 54 4 0 6 6]`

`[ 5 50 87 74 36 93]`

`[15 19 0 79 33 73]`

`[51 57 32 8 1 89]]`

with a shape of

`(6, 6)`

### Keep only one element every $n \times n$ blocks

To downsample a matrix a simple solution is to slice the matrix, example:

`a = a[1::2, 1::2]`

`print(a)`

`print(a.shape)`

returns

`[[40 50 20]`

`[50 74 93]`

`[57 8 89]]`

with a shape of

`(3, 3)`