swectral.spectral_angle_arr#

swectral.spectral_angle_arr(spec_array_2d, reference_spectrum, axis=0, invalid_raise=False)[source]#

Compute spectral angles between multiple spectra and a reference spectrum.

Each spectrum in the input 2D array is compared against the reference spectrum. Rows or columns are treated as individual spectra depending on the selected axis.

Parameters:
spec_array_2d2D array_like

2D array-like containing 1D spectra.

reference_spectrum1D array_like

1D reference spectrum used for comparison.

axisint, optional

Axis along which spectra are defined.

  • 0 : each row data represents a spectrum sample.

  • 1 : each column data represents a spectrum sample.

The default is 0.

invalid_raisebool

Whether to raise an error when the spectral angle is undefined (e.g. when the values of one spectrum are all zeros).

If False, numpy.nan is returned for invalid inputs. If True, an error is raised for undefined spectral angle. Default is False.

Returns:
numpy.ndarray

1D array containing the spectral angles (in radians) between each input spectrum and the reference spectrum.

Return type:

ndarray

Examples

Basic usage:

>>> x = [[1, 2, 3, 4],
...      [5, 6, 7, 8],
...      [9, 10, 11, 12],
...      [13, 14, 15, 16]]
>>> ref = [1, 1, 2, 2]

>>> spectral_angle_arr(x, ref)

Use different axis:

>>> spectral_angle_arr(x, ref, axis=1)

Raise an error for invalid spectra:

>>> x_invalid = [[1, 2, 3, 4],
...              [5, 6, 7, 8],
...              [9, 10, 11, 12],
...              [0, 0, 0, 0]]

>>> spectral_angle_arr(x_invalid, ref, invalid_raise=True)