Source code for aerosandbox.numpy.logicals
import numpy as _onp
import casadi as _cas
from aerosandbox.numpy.determine_type import is_casadi_type
[docs]def clip(
x,
min,
max
):
"""
Clip a value to a range.
Args:
x: Value to clip.
min: Minimum value to clip to.
max: Maximum value to clip to.
Returns:
"""
return _onp.fmin(_onp.fmax(x, min), max)
[docs]def logical_and(x1, x2):
"""
Compute the truth value of x1 AND x2 element-wise.
See syntax here: https://numpy.org/doc/stable/reference/generated/numpy.logical_and.html
"""
if not is_casadi_type([x1, x2], recursive=True):
return _onp.logical_and(x1, x2)
else:
return _cas.logic_and(x1, x2)
[docs]def logical_or(x1, x2):
"""
Compute the truth value of x1 OR x2 element-wise.
See syntax here: https://numpy.org/doc/stable/reference/generated/numpy.logical_or.html
"""
if not is_casadi_type([x1, x2], recursive=True):
return _onp.logical_or(x1, x2)
else:
return _cas.logic_or(x1, x2)
[docs]def logical_not(x):
"""
Compute the truth value of NOT x element-wise.
See syntax here: https://numpy.org/doc/stable/reference/generated/numpy.logical_not.html
"""
if not is_casadi_type(x, recursive=False):
return _onp.logical_not(x)
else:
return _cas.logic_not(x)
[docs]def all(a): # TODO add axis functionality
"""
Test whether all array elements along a given axis evaluate to True.
See syntax here: https://numpy.org/doc/stable/reference/generated/numpy.all.html
"""
if not is_casadi_type(a, recursive=False):
return _onp.all(a)
else:
try:
return _cas.logic_all(a)
except NotImplementedError:
return False
[docs]def any(a): # TODO add axis functionality
"""
Test whether any array element along a given axis evaluates to True.
See syntax here: https://numpy.org/doc/stable/reference/generated/numpy.any.html
"""
if not is_casadi_type(a, recursive=False):
return _onp.any(a)
else:
try:
return _cas.logic_any(a)
except NotImplementedError:
return False