block_reduce

astropy.nddata.block_reduce(data, block_size, func=<function sum>)[source] [edit on github]

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.

Parameters:
data : array_like

The data to be resampled.

block_size : int 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.

func : callable, 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).

Returns:
output : array-like

The resampled data.

Examples

>>> 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]])