astropy.nddata.utils.block_reduce(data, block_size, func=<function sum at 0x7fa0b94046a8>)[source]

Downsample a data array by applying a function to local blocks.

If data is not perfectly divisible by block_size along a given axis then the data will be trimmed (from the end) along that axis.


The data to be resampled.

block_sizeint or array_like (int)

The integer block size along each axis. If block_size is a scalar and data has more than one dimension, then block_size will be used for for every axis.

funccallable, optional

The method to use to downsample the data. Must be a callable that takes in a ndarray along with an axis keyword, which defines the axis along which the function is applied. The default is sum, which provides block summation (and conserves the data sum).


The resampled data.


>>> import numpy as np
>>> from astropy.nddata.utils import block_reduce
>>> data = np.arange(16).reshape(4, 4)
>>> block_reduce(data, 2)    
array([[10, 18],
       [42, 50]])
>>> block_reduce(data, 2, func=np.mean)    
array([[  2.5,   4.5],
       [ 10.5,  12.5]])