scipy.ndimage.

variance#

scipy.ndimage.variance(input, labels=None, index=None)[source]#

Calculate the variance of the values of an N-D image array, optionally at specified sub-regions.

Parameters:
inputarray_like

Nd-image data to process.

labelsarray_like, optional

Labels defining sub-regions in input. If not None, must be same shape as input.

indexint or sequence of ints, optional

labels to include in output. If None (default), all values where labels is non-zero are used.

Returns:
variancefloat or ndarray

Values of variance, for each sub-region if labels and index are specified.

Notes

variance has experimental support for Python Array API Standard compatible backends in addition to NumPy. Please consider testing these features by setting an environment variable SCIPY_ARRAY_API=1 and providing CuPy, PyTorch, JAX, or Dask arrays as array arguments. The following combinations of backend and device (or other capability) are supported.

Library

CPU

GPU

NumPy

n/a

CuPy

n/a

PyTorch

JAX

⚠️ no JIT

Dask

⚠️ computes graph

n/a

See Support for the array API standard for more information.

Examples

>>> import numpy as np
>>> a = np.array([[1, 2, 0, 0],
...               [5, 3, 0, 4],
...               [0, 0, 0, 7],
...               [9, 3, 0, 0]])
>>> from scipy import ndimage
>>> ndimage.variance(a)
7.609375

Features to process can be specified using labels and index:

>>> lbl, nlbl = ndimage.label(a)
>>> ndimage.variance(a, lbl, index=np.arange(1, nlbl+1))
array([ 2.1875,  2.25  ,  9.    ])

If no index is given, all non-zero labels are processed:

>>> ndimage.variance(a, lbl)
6.1875