larray.Session.element_equals

Session.element_equals(other, rtol=0, atol=0, nans_equal=False) → larray.core.array.Array[source]

Test if each element (group, axis and array) of the current session equals the corresponding element of another session.

For arrays, it is equivalent to apply Array.equals() with flag nans_equal=True to all arrays from two sessions.

Parameters:
other : Session

Session to compare with.

rtol : float or int, optional

The relative tolerance parameter (see Notes). Defaults to 1e-05.

atol : float or int, optional

The absolute tolerance parameter (see Notes). Defaults to 1e-08.

nans_equal : boolean, optional

Whether to consider NaN values at the same positions in the two arrays as equal. By default, an array containing NaN values is never equal to another array, even if that other array also contains NaN values at the same positions. The reason is that a NaN value is different from anything, including itself. Defaults to True.

Returns:
Boolean Array

See also

Session.equals

Notes

Metadata is ignored.

For finite values, equals uses the following equation to test whether two arrays are equal:

absolute(array1 - array2) <= (atol + rtol * absolute(array2))

Examples

>>> a = Axis('a=a0..a2')
>>> a01 = a['a0,a1'] >> 'a01'
>>> s1 = Session([('a', a), ('a01', a01), ('arr1', ndtest(2)), ('arr2', ndtest((2, 2)))])
>>> s2 = Session([('a', a), ('a01', a01), ('arr1', ndtest(2)), ('arr2', ndtest((2, 2)))])

Identical sessions

>>> s1.element_equals(s2)
name     a   a01  arr1  arr2
      True  True  True  True

Different value(s) between two arrays

>>> s2.arr1['a1'] = 0
>>> s1.element_equals(s2)
name     a   a01   arr1  arr2
      True  True  False  True

Test equality between two arrays within a given tolerance range. Return True if absolute(s1.arr1 - s2.arr1) <= (atol + rtol * absolute(s2.arr1)).

>>> s1.arr1 = Array([6., 8.], "a=a0,a1")
>>> s2.arr1 = Array([5.999, 8.001], "a=a0,a1")
>>> s1.element_equals(s2)
name     a   a01   arr1  arr2
      True  True  False  True
>>> s1.element_equals(s2, atol=0.01)
name     a   a01  arr1  arr2
      True  True  True  True
>>> s1.element_equals(s2, rtol=0.01)
name     a   a01  arr1  arr2
      True  True  True  True

Different label(s)

>>> s2.arr2 = ndtest("b=b0,b1; a=a0,a1")
>>> s2.a = Axis('a=a0,a1')
>>> s1.element_equals(s2)
name      a   a01   arr1   arr2
      False  True  False  False

Extra/missing objects

>>> s2.arr3 = ndtest((3, 3))
>>> del s2.a
>>> s1.element_equals(s2)
name      a   a01   arr1   arr2   arr3
      False  True  False  False  False