Skip to content

Commit 78f79f7

Browse files
committed
fix std, var units
1 parent 3726df1 commit 78f79f7

File tree

1 file changed

+13
-3
lines changed

1 file changed

+13
-3
lines changed

src/pint_array/__init__.py

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -729,7 +729,6 @@ def set_fun(x, /):
729729
# output_unit="sum":
730730
# `x.units`, unless non-multiplicative, which raises `OffsetUnitCalculusError`
731731
for func_str in (
732-
"std",
733732
"cumulative_sum",
734733
"sum",
735734
):
@@ -745,6 +744,17 @@ def func(x, /, *args, func_str=func_str, **kwargs):
745744

746745
setattr(mod, func_str, func)
747746

747+
# output_unit="delta"
748+
def std(x, /, **kwargs):
749+
x = asarray(x)
750+
magnitude = xp.asarray(x.magnitude, copy=True)
751+
units = x.units
752+
magnitude = xp.std(magnitude, **kwargs)
753+
units = (1 * units - 1 * units).units
754+
return ArrayUnitQuantity(magnitude, units)
755+
756+
mod.std = std
757+
748758
for func_str in (
749759
"any",
750760
"all",
@@ -764,14 +774,14 @@ def func(x, /, *args, func_str=func_str, **kwargs):
764774
setattr(mod, func_str, func)
765775

766776
# output_unit="variance":
767-
# square of `x.units`,
777+
# square of delta `x.units`,
768778
# unless non-multiplicative, which raises `OffsetUnitCalculusError`
769779
def var(x, /, *args, **kwargs):
770780
x = asarray(x)
771781
magnitude = xp.asarray(x.magnitude, copy=True)
772782
units = x.units
773783
magnitude = xp.var(magnitude, *args, **kwargs)
774-
units = ((1 * units + 1 * units) ** 2).units
784+
units = ((1 * units - 1 * units) ** 2).units
775785
return ArrayUnitQuantity(magnitude, units)
776786

777787
mod.var = var

0 commit comments

Comments
 (0)