def test_nanmean(self): arr = np.random.rand(10,10,10) dat = AttrArray(arr,name='randvals') # if there are no NaN's, mean and nanmean should give equal # results: self.assertEquals(dat.mean(),dat.nanmean()) assert_array_almost_equal(dat.mean(0),dat.nanmean(0)) self.assertEquals(dat.nanmean(0).name, 'randvals') assert_array_almost_equal(dat.mean(1),dat.nanmean(1)) self.assertEquals(dat.nanmean(1).name, 'randvals') assert_array_almost_equal(dat.mean(2),dat.nanmean(2)) self.assertEquals(dat.nanmean(2).name, 'randvals') # Now, make sure results are as expected with NaN present: arr[0,0,0] = np.nan dat = AttrArray(arr,name='randvals') self.assertEquals(dat[~np.isnan(dat)].mean(),dat.nanmean()) for i in range(len(arr.shape)): tmp1 = dat.mean(i) tmp1[0,0] = 0 tmp2 = dat.nanmean(i) tmp2[0,0] = 0 assert_array_almost_equal(tmp1,tmp2) self.assertEquals(tmp2.name, 'randvals') arr[3,6,2] = np.nan dat = AttrArray(arr,name='randvals') self.assertEquals(dat[~np.isnan(dat)].mean(),dat.nanmean()) tmp1 = dat.mean(0) tmp1[0,0] = 0 tmp1[6,2] = 0 tmp2 = dat.nanmean(0) tmp2[0,0] = 0 tmp2[6,2] = 0 assert_array_almost_equal(tmp1,tmp2) self.assertEquals(tmp2.name, 'randvals') tmp1 = dat.mean(1) tmp1[0,0] = 0 tmp1[3,2] = 0 tmp2 = dat.nanmean(1) tmp2[0,0] = 0 tmp2[3,2] = 0 assert_array_almost_equal(tmp1,tmp2) self.assertEquals(tmp2.name, 'randvals') tmp1 = dat.mean(2) tmp1[0,0] = 0 tmp1[3,6] = 0 tmp2 = dat.nanmean(2) tmp2[0,0] = 0 tmp2[3,6] = 0 assert_array_almost_equal(tmp1,tmp2) self.assertEquals(tmp2.name, 'randvals')
def test_nanmean(self): arr = np.random.rand(10, 10, 10) dat = AttrArray(arr, name='randvals') # if there are no NaN's, mean and nanmean should give equal # results: self.assertEquals(dat.mean(), dat.nanmean()) assert_array_almost_equal(dat.mean(0), dat.nanmean(0)) self.assertEquals(dat.nanmean(0).name, 'randvals') assert_array_almost_equal(dat.mean(1), dat.nanmean(1)) self.assertEquals(dat.nanmean(1).name, 'randvals') assert_array_almost_equal(dat.mean(2), dat.nanmean(2)) self.assertEquals(dat.nanmean(2).name, 'randvals') # Now, make sure results are as expected with NaN present: arr[0, 0, 0] = np.nan dat = AttrArray(arr, name='randvals') self.assertEquals(dat[~np.isnan(dat)].mean(), dat.nanmean()) for i in range(len(arr.shape)): tmp1 = dat.mean(i) tmp1[0, 0] = 0 tmp2 = dat.nanmean(i) tmp2[0, 0] = 0 assert_array_almost_equal(tmp1, tmp2) self.assertEquals(tmp2.name, 'randvals') arr[3, 6, 2] = np.nan dat = AttrArray(arr, name='randvals') self.assertEquals(dat[~np.isnan(dat)].mean(), dat.nanmean()) tmp1 = dat.mean(0) tmp1[0, 0] = 0 tmp1[6, 2] = 0 tmp2 = dat.nanmean(0) tmp2[0, 0] = 0 tmp2[6, 2] = 0 assert_array_almost_equal(tmp1, tmp2) self.assertEquals(tmp2.name, 'randvals') tmp1 = dat.mean(1) tmp1[0, 0] = 0 tmp1[3, 2] = 0 tmp2 = dat.nanmean(1) tmp2[0, 0] = 0 tmp2[3, 2] = 0 assert_array_almost_equal(tmp1, tmp2) self.assertEquals(tmp2.name, 'randvals') tmp1 = dat.mean(2) tmp1[0, 0] = 0 tmp1[3, 6] = 0 tmp2 = dat.nanmean(2) tmp2[0, 0] = 0 tmp2[3, 6] = 0 assert_array_almost_equal(tmp1, tmp2) self.assertEquals(tmp2.name, 'randvals')