ndtools.comparison module#

class TotalEquality[source]#

Bases: Equatable

Implement 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: Orderable

Implement 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])