def test_array_to_duplicated_b(self): a = np.array([[50, 50, 32, 17, 17], [2, 2, 1, 3, 3]]) # find duplicate rows post = _array_to_duplicated(a, axis=0) self.assertEqual(post.tolist(), [False, False]) post = _array_to_duplicated(a, axis=1) self.assertEqual(post.tolist(), [True, True, False, True, True]) post = _array_to_duplicated(a, axis=1, exclude_first=True) self.assertEqual(post.tolist(), [False, True, False, False, True])
def test_array_to_duplicated_a(self): a = _array_to_duplicated( np.array([0,1,2,2,1,4,5,3,4,5,5,6]), exclude_first=False, exclude_last=False ) self.assertEqual(a.tolist(), [False, True, True, True, True, True, True, False, True, True, True, False]) a = _array_to_duplicated( np.array([0,1,2,2,1,4,5,3,4,5,5,6]), exclude_first=True, exclude_last=False ) self.assertEqual(a.tolist(), [False, False, False, True, True, False, False, False, True, True, True, False])
def drop_duplicated(self, exclude_first=False, exclude_last=False): ''' Return a Series with duplicated values removed. ''' duplicates = _array_to_duplicated(self.values, exclude_first=exclude_first, exclude_last=exclude_last) keep = ~duplicates return self.__class__(self.values[keep], index=self._index[keep])
def duplicated(self, exclude_first=False, exclude_last=False) -> np.ndarray: ''' Return a same-sized Boolean Series that shows True for all b values that are duplicated. ''' # TODO: might be able to do this witnout calling .values and passing in TypeBlocks, but TB needs to support roll duplicates = _array_to_duplicated(self.values, exclude_first=exclude_first, exclude_last=exclude_last) duplicates.flags.writeable = False return self.__class__(duplicates, index=self._index)
def test_array_to_duplicated_c(self): a = np.array([[50, 50, 32, 17, 17], [2, 2, 1, 3, 3]]) with self.assertRaises(Exception): _array_to_duplicated(a, axis=None)