diff options
author | Hernan Grecco <hernan.grecco@gmail.com> | 2020-02-21 23:41:43 -0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-02-21 23:41:43 -0300 |
commit | 78b1e52958a326cba4983c3ef84016756274c92c (patch) | |
tree | dfcaa026318ffb0c06fc82729955da8479c581c2 /pint/numpy_func.py | |
parent | 36ebb0f0e280bbb5b1cd32475e4b13d0222a371c (diff) | |
parent | 92dc58e7b1de6a7ad0aaaad48f63490a80e1d82d (diff) | |
download | pint-_decimal.tar.gz |
Merge branch 'master' into _decimal_decimal
Diffstat (limited to 'pint/numpy_func.py')
-rw-r--r-- | pint/numpy_func.py | 18 |
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 |