@@ -16,6 +16,8 @@ def setup(self, *args, **kwargs):
16
16
}
17
17
)
18
18
self .ds2d = self .ds1d .expand_dims (z = 10 )
19
+ self .ds1d_mean = self .ds1d .groupby ("b" ).mean ()
20
+ self .ds2d_mean = self .ds2d .groupby ("b" ).mean ()
19
21
20
22
@parameterized (["ndim" ], [(1 , 2 )])
21
23
def time_init (self , ndim ):
@@ -31,6 +33,18 @@ def time_agg_large_num_groups(self, method, ndim):
31
33
ds = getattr (self , f"ds{ ndim } d" )
32
34
getattr (ds .groupby ("b" ), method )()
33
35
36
+ def time_groupby_binary_op_1d (self ):
37
+ self .ds1d - self .ds1d_mean
38
+
39
+ def time_groupby_binary_op_2d (self ):
40
+ self .ds2d - self .ds2d_mean
41
+
42
+ def peakmem_groupby_binary_op_1d (self ):
43
+ self .ds1d - self .ds1d_mean
44
+
45
+ def peakmem_groupby_binary_op_2d (self ):
46
+ self .ds2d - self .ds2d_mean
47
+
34
48
35
49
class GroupByDask (GroupBy ):
36
50
def setup (self , * args , ** kwargs ):
@@ -40,6 +54,8 @@ def setup(self, *args, **kwargs):
40
54
self .ds2d = self .ds2d .sel (dim_0 = slice (None , None , 2 )).chunk (
41
55
{"dim_0" : 50 , "z" : 5 }
42
56
)
57
+ self .ds1d_mean = self .ds1d .groupby ("b" ).mean ()
58
+ self .ds2d_mean = self .ds2d .groupby ("b" ).mean ()
43
59
44
60
45
61
class GroupByPandasDataFrame (GroupBy ):
@@ -51,6 +67,13 @@ def setup(self, *args, **kwargs):
51
67
52
68
super ().setup (** kwargs )
53
69
self .ds1d = self .ds1d .to_dataframe ()
70
+ self .ds1d_mean = self .ds1d .groupby ("b" ).mean ()
71
+
72
+ def time_groupby_binary_op_2d (self ):
73
+ raise NotImplementedError
74
+
75
+ def peakmem_groupby_binary_op_2d (self ):
76
+ raise NotImplementedError
54
77
55
78
56
79
class GroupByDaskDataFrame (GroupBy ):
@@ -63,6 +86,13 @@ def setup(self, *args, **kwargs):
63
86
requires_dask ()
64
87
super ().setup (** kwargs )
65
88
self .ds1d = self .ds1d .chunk ({"dim_0" : 50 }).to_dataframe ()
89
+ self .ds1d_mean = self .ds1d .groupby ("b" ).mean ()
90
+
91
+ def time_groupby_binary_op_2d (self ):
92
+ raise NotImplementedError
93
+
94
+ def peakmem_groupby_binary_op_2d (self ):
95
+ raise NotImplementedError
66
96
67
97
68
98
class Resample :
@@ -74,6 +104,8 @@ def setup(self, *args, **kwargs):
74
104
coords = {"time" : pd .date_range ("2001-01-01" , freq = "H" , periods = 365 * 24 )},
75
105
)
76
106
self .ds2d = self .ds1d .expand_dims (z = 10 )
107
+ self .ds1d_mean = self .ds1d .resample (time = "48H" ).mean ()
108
+ self .ds2d_mean = self .ds2d .resample (time = "48H" ).mean ()
77
109
78
110
@parameterized (["ndim" ], [(1 , 2 )])
79
111
def time_init (self , ndim ):
@@ -89,6 +121,18 @@ def time_agg_large_num_groups(self, method, ndim):
89
121
ds = getattr (self , f"ds{ ndim } d" )
90
122
getattr (ds .resample (time = "48H" ), method )()
91
123
124
+ def time_groupby_binary_op_1d (self ):
125
+ self .ds1d - self .ds1d_mean
126
+
127
+ def time_groupby_binary_op_2d (self ):
128
+ self .ds2d - self .ds2d_mean
129
+
130
+ def peakmem_groupby_binary_op_1d (self ):
131
+ self .ds1d - self .ds1d_mean
132
+
133
+ def peakmem_groupby_binary_op_2d (self ):
134
+ self .ds2d - self .ds2d_mean
135
+
92
136
93
137
class ResampleDask (Resample ):
94
138
def setup (self , * args , ** kwargs ):
0 commit comments