diff --git a/Orange/preprocess/preprocess.py b/Orange/preprocess/preprocess.py index 8a98b683369..a272739c751 100644 --- a/Orange/preprocess/preprocess.py +++ b/Orange/preprocess/preprocess.py @@ -190,8 +190,8 @@ def __call__(self, data): data : an input dataset """ - oks = bn.nanmin(data.X, axis=0) != \ - bn.nanmax(data.X, axis=0) + oks = np.logical_and(~bn.allnan(data.X, axis=0), + bn.nanmin(data.X, axis=0) != bn.nanmax(data.X, axis=0)) atts = [data.domain.attributes[i] for i, ok in enumerate(oks) if ok] domain = Orange.data.Domain(atts, data.domain.class_vars, data.domain.metas) diff --git a/Orange/tests/test_preprocess.py b/Orange/tests/test_preprocess.py index dcda85c77cd..c4072dde259 100644 --- a/Orange/tests/test_preprocess.py +++ b/Orange/tests/test_preprocess.py @@ -61,10 +61,11 @@ def test_refuse_data_in_constructor(self): class TestRemoveConstant(unittest.TestCase): def test_remove_columns(self): - X = np.random.rand(6, 4) + X = np.random.rand(6, 5) X[:, (1,3)] = 5 X[3, 1] = np.nan X[1, 1] = np.nan + X[:, 4] = np.nan data = Table(X) d = RemoveConstant()(data) self.assertEqual(len(d.domain.attributes), 2)