@@ -729,7 +729,6 @@ def set_fun(x, /):
729
729
# output_unit="sum":
730
730
# `x.units`, unless non-multiplicative, which raises `OffsetUnitCalculusError`
731
731
for func_str in (
732
- "std" ,
733
732
"cumulative_sum" ,
734
733
"sum" ,
735
734
):
@@ -745,6 +744,17 @@ def func(x, /, *args, func_str=func_str, **kwargs):
745
744
746
745
setattr (mod , func_str , func )
747
746
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
+
748
758
for func_str in (
749
759
"any" ,
750
760
"all" ,
@@ -764,14 +774,14 @@ def func(x, /, *args, func_str=func_str, **kwargs):
764
774
setattr (mod , func_str , func )
765
775
766
776
# output_unit="variance":
767
- # square of `x.units`,
777
+ # square of delta `x.units`,
768
778
# unless non-multiplicative, which raises `OffsetUnitCalculusError`
769
779
def var (x , / , * args , ** kwargs ):
770
780
x = asarray (x )
771
781
magnitude = xp .asarray (x .magnitude , copy = True )
772
782
units = x .units
773
783
magnitude = xp .var (magnitude , * args , ** kwargs )
774
- units = ((1 * units + 1 * units ) ** 2 ).units
784
+ units = ((1 * units - 1 * units ) ** 2 ).units
775
785
return ArrayUnitQuantity (magnitude , units )
776
786
777
787
mod .var = var
0 commit comments