summaryrefslogtreecommitdiff
path: root/pint/numpy_func.py
diff options
context:
space:
mode:
authorHernan Grecco <hernan.grecco@gmail.com>2020-02-21 23:41:43 -0300
committerGitHub <noreply@github.com>2020-02-21 23:41:43 -0300
commit78b1e52958a326cba4983c3ef84016756274c92c (patch)
treedfcaa026318ffb0c06fc82729955da8479c581c2 /pint/numpy_func.py
parent36ebb0f0e280bbb5b1cd32475e4b13d0222a371c (diff)
parent92dc58e7b1de6a7ad0aaaad48f63490a80e1d82d (diff)
downloadpint-_decimal.tar.gz
Merge branch 'master' into _decimal_decimal
Diffstat (limited to 'pint/numpy_func.py')
-rw-r--r--pint/numpy_func.py18
1 files changed, 10 insertions, 8 deletions
diff --git a/pint/numpy_func.py b/pint/numpy_func.py
index 1fd7d8c..c03887b 100644
--- a/pint/numpy_func.py
+++ b/pint/numpy_func.py
@@ -654,20 +654,22 @@ def _pad(array, pad_width, mode="constant", **kwargs):
def _recursive_convert(arg, unit):
if iterable(arg):
return tuple(_recursive_convert(a, unit=unit) for a in arg)
- elif _is_quantity(arg):
- return arg.m_as(unit)
- else:
- return arg
+ elif not _is_quantity(arg):
+ if arg == 0 or np.isnan(arg):
+ arg = unit._REGISTRY.Quantity(arg, unit)
+ else:
+ arg = unit._REGISTRY.Quantity(arg, "dimensionless")
+
+ return arg.m_as(unit)
# pad only dispatches on array argument, so we know it is a Quantity
units = array.units
# Handle flexible constant_values and end_values, converting to units if Quantity
# and ignoring if not
- if mode == "constant":
- kwargs["constant_values"] = _recursive_convert(kwargs["constant_values"], units)
- elif mode == "linear_ramp":
- kwargs["end_values"] = _recursive_convert(kwargs["end_values"], units)
+ for key in ("constant_values", "end_values"):
+ if key in kwargs:
+ kwargs[key] = _recursive_convert(kwargs[key], units)
return units._REGISTRY.Quantity(
np.pad(array._magnitude, pad_width, mode=mode, **kwargs), units