block_reduce

astropy.nddata.block_reduce(data, block_size, func=<function sum>)[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.

Parameters
dataarray_like

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 or axes along which the function is applied. The axis keyword must accept multiple axes as a tuple. The default is sum, which provides block summation (and conserves the data sum).

Returns
outputarray_like

The resampled data.

Examples

>>> import numpy as np
>>> from astropy.nddata 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]])