diff options
author | danielhrisca <daniel.hrisca@gmail.com> | 2018-12-17 12:37:00 +0200 |
---|---|---|
committer | danielhrisca <daniel.hrisca@gmail.com> | 2018-12-17 12:39:30 +0200 |
commit | fe9252392d8c3c62062133bffbffab9f72b7de0f (patch) | |
tree | 71c1cb3ff63db7489473336a8bdda37bc3007e20 /numpy | |
parent | 38236fb225418ad5979511e3caf7e992df72b1a7 (diff) | |
download | numpy-fe9252392d8c3c62062133bffbffab9f72b7de0f.tar.gz |
ENH: improve performance for core/records/find_duplicate
Diffstat (limited to 'numpy')
-rw-r--r-- | numpy/core/records.py | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/numpy/core/records.py b/numpy/core/records.py index ff2a3ef9f..7f77bcc83 100644 --- a/numpy/core/records.py +++ b/numpy/core/records.py @@ -38,6 +38,7 @@ from __future__ import division, absolute_import, print_function import sys import os import warnings +from collections import OrderedDict from . import numeric as sb from . import numerictypes as nt @@ -75,12 +76,14 @@ numfmt = nt.typeDict def find_duplicate(list): """Find duplication in a list, return a list of duplicated elements""" - dup = [] - for i in range(len(list)): - if (list[i] in list[i + 1:]): - if (list[i] not in dup): - dup.append(list[i]) - return dup + counter = OrderedDict() + for item in list: + if item in counter: + counter[item] += 1 + else: + counter[item] = 1 + + return [item for item, counts in counter.items() if counts > 1] @set_module('numpy') |