Я получил это, используя np.unique(..., return_counts=True)
:
import numpy as np
# Synthesise array...
arr = np.random.randint(0,8, (10000), np.int32)
# ... with one unique value
arr[5000] = 9
А теперь время код:
%%timeit
...: v,c = np.unique(arr, return_counts=True)
...: np.argwhere(c==1)
164 µs ± 672 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)
Массив c
выглядит так:
array([1284, 1224, 1311, 1185, 1207, 1278, 1233, 1277, 1])
и индекс уникального значения:
np.argwhere(c==1)
Out[62]: array([[8]])