summaryrefslogtreecommitdiff
path: root/numpy
diff options
context:
space:
mode:
authordanielhrisca <daniel.hrisca@gmail.com>2018-12-17 12:37:00 +0200
committerdanielhrisca <daniel.hrisca@gmail.com>2018-12-17 12:39:30 +0200
commitfe9252392d8c3c62062133bffbffab9f72b7de0f (patch)
tree71c1cb3ff63db7489473336a8bdda37bc3007e20 /numpy
parent38236fb225418ad5979511e3caf7e992df72b1a7 (diff)
downloadnumpy-fe9252392d8c3c62062133bffbffab9f72b7de0f.tar.gz
ENH: improve performance for core/records/find_duplicate
Diffstat (limited to 'numpy')
-rw-r--r--numpy/core/records.py15
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')