correlation#
- scipy.spatial.distance.correlation(u, v, w=None, centered=True)[source]#
Compute the correlation distance between two arrays.
The correlation distance between u and v, is defined as
\[1 - \frac{(u - \bar{u}) \cdot (v - \bar{v})} {{\|(u - \bar{u})\|}_2 {\|(v - \bar{v})\|}_2}\]where \(\bar{u}\) is the mean of the elements of u and \(x \cdot y\) is the dot product of \(x\) and \(y\).
- Parameters:
- u(…, N) array_like of floats
Input array.
- v(…, N) array_like of floats
Input array.
- w(…, N) array_like of floats, optional
The weights for each value in u and v. Default is None, which gives each value a weight of 1.0
- centeredbool, optional
If True, u and v will be centered. Default is True.
- Returns:
- correlationfloat or array
The correlation distance between arrays u and v.
Notes
Array API Standard Support
correlationhas support for Python Array API Standard compatible backends in addition to NumPy. The following combinations of backend and device (or other capability) are supported.Library
CPU
GPU
NumPy
✅
n/a
CuPy
n/a
✅
PyTorch
✅
✅
JAX
✅
✅
Dask
✅
n/a
See Support for the array API standard for more information.
Examples
Find the correlation between two arrays.
>>> from scipy.spatial.distance import correlation >>> correlation([1, 0, 1], [1, 1, 0]) 1.5
Using a weighting array, the correlation can be calculated as:
>>> correlation([1, 0, 1], [1, 1, 0], w=[0.9, 0.1, 0.1]) 1.1
If centering is not needed, the correlation can be calculated as:
>>> correlation([1, 0, 1], [1, 1, 0], centered=False) 0.5