ndtools.comparison module#
- class TotalEquality[source]#
Bases:
EquatableImplement missing equality operations for multidimensional arrays.
- Raises:
ValueError – Raised if none of the equality operators (==, !=) is defined.
Examples
import numpy as np from ndtools import TotalEquality class Even(TotalEquality): def __eq__(self, array): return array % 2 == 0 Even() == np.arange(3) # -> array([True, False, True]) np.arange(3) == Even() # -> array([True, False, True]) Even() != np.arange(3) # -> array([False, True, False]) np.arange(3) != Even() # -> array([False, True, False])
- class TotalOrdering[source]#
Bases:
OrderableImplement missing ordering operations for multidimensional arrays.
- Raises:
ValueError – Raise if none of the ordering operator (>=, >, <=, <) is defined.
Examples
import numpy as np from dataclasses import dataclass from ndtools import TotalOrdering @dataclass class Range(TotalOrdering): lower: float upper: float def __eq__(self, array): return (array >= self.lower) & (array < self.upper) def __ge__(self, array): return array < self.upper Range(1, 2) == np.arange(3) # -> array([False, True, False]) np.arange(3) == Range(1, 2) # -> array([False, True, False]) Range(1, 2) >= np.arange(3) # -> array([True, True, False]) np.arange(3) <= Range(1, 2) # -> array([True, True, False])