@@ -31,10 +31,6 @@ def test_bincount(self):
3131 self .assertEqual (n_nans , 0 )
3232 np .testing .assert_equal (hist , [1 , 1 , 0 , 1 ])
3333
34- def test_countnans (self ):
35- np .testing .assert_equal (countnans ([[1 , np .nan ],
36- [2 , np .nan ]], axis = 0 ), [0 , 2 ])
37-
3834 def test_contingency (self ):
3935 x = np .array ([0 , 1 , 0 , 2 , np .nan ])
4036 y = np .array ([0 , 0 , 1 , np .nan , 0 ])
@@ -241,3 +237,71 @@ def test_var(self):
241237 var (csr_matrix (data ), axis = axis ),
242238 np .var (data , axis = axis )
243239 )
240+
241+
242+ class TestCountnans (unittest .TestCase ):
243+ def test_countnans_on_sparse_array (self ):
244+ x = csr_matrix ([0 , 1 , 0 , 2 , 2 , np .nan , 1 , np .nan , 0 , 1 ])
245+ self .assertEqual (countnans (x ), 2 )
246+
247+ def test_countnans_on_dense_array (self ):
248+ x = np .array ([0 , 1 , 0 , 2 , 2 , np .nan , 1 , np .nan , 0 , 1 ])
249+ self .assertEqual (countnans (x ), 2 )
250+
251+ def test_shape_matches_dense_and_sparse_given_array_and_axis_None (self ):
252+ dense = np .array ([0 , 1 , 0 , 2 , 2 , np .nan , 1 , np .nan , 0 , 1 ])
253+ sparse = csr_matrix (dense )
254+ np .testing .assert_equal (countnans (dense ), countnans (sparse ))
255+ self .assertEqual (countnans (dense ), 2 )
256+
257+ def test_shape_matches_dense_and_sparse_given_array_and_axis_0 (self ):
258+ dense = np .array ([0 , 1 , 0 , 2 , 2 , np .nan , 1 , np .nan , 0 , 1 ])
259+ sparse = csr_matrix (dense )
260+ np .testing .assert_equal (countnans (dense , axis = 0 ), countnans (sparse , axis = 0 ))
261+ self .assertEqual (countnans (dense , axis = 0 ), 2 )
262+
263+ def test_shape_matches_dense_and_sparse_given_array_and_axis_1 (self ):
264+ dense = np .array ([0 , 1 , 0 , 2 , 2 , np .nan , 1 , np .nan , 0 , 1 ])
265+ sparse = csr_matrix (dense )
266+ np .testing .assert_equal (countnans (dense , axis = 1 ), countnans (sparse , axis = 1 ))
267+ self .assertEqual (countnans (dense , axis = 1 ), 2 )
268+
269+ def test_countnans (self ):
270+ x = [[1 , np .nan ],
271+ [2 , np .nan ]]
272+ np .testing .assert_equal (
273+ countnans (x ), 2 , 'Countnans fails on dense data' )
274+ np .testing .assert_equal (
275+ countnans (csr_matrix (x )), 2 , 'Countnans fails on sparse data.' )
276+
277+ def test_countnans_columns (self ):
278+ x = [[1 , np .nan ],
279+ [2 , np .nan ]]
280+ np .testing .assert_equal (
281+ countnans (x , axis = 0 ), [0 , 2 ],
282+ 'Countnans fails on dense data with `axis=0`' )
283+ np .testing .assert_equal (
284+ countnans (csr_matrix (x ), axis = 0 ), [0 , 2 ],
285+ 'Countnans fails on sparse data with `axis=0`' )
286+
287+ def test_countnans_rows (self ):
288+ x = [[1 , np .nan ],
289+ [2 , np .nan ]]
290+ np .testing .assert_equal (
291+ countnans (x , axis = 1 ), [1 , 1 ],
292+ 'Countnans fails on dense data with `axis=1`' )
293+ np .testing .assert_equal (
294+ countnans (csr_matrix (x ), axis = 1 ), [1 , 1 ],
295+ 'Countnans fails on sparse data with `axis=1`' )
296+
297+ def test_countnans_weights (self ):
298+ x = [[1 , np .nan ],
299+ [2 , np .nan ]]
300+ w = np .array ([[1 , 1 ],
301+ [2 , 2 ]])
302+ np .testing .assert_equal (countnans (x , weights = w , axis = 0 ), [0 , 3 ])
303+ np .testing .assert_equal (countnans (x , weights = w , axis = 1 ), [1 , 2 ])
304+
305+ w = np .array ([1 , 2 ])
306+ np .testing .assert_equal (countnans (x , weights = w , axis = 0 ), [0 , 4 ])
307+ np .testing .assert_equal (countnans (x , weights = w , axis = 1 ), [1 , 2 ])
0 commit comments