Проблема
У меня есть массив NumPy, и мне нужно идентифицировать повторяющиеся элементы, отмечая второе вхождение и далее как True, сохраняя при этом первое вхождение как False.
Например, для следующего массива:
np.random.seed(100)
a = np.random.randint(0, 5, 10)
# Output: [0 0 3 0 2 4 2 2 2 2]
Я хочу получить следующий результат:
[False True False True False False True True True True]
Как этого добиться, используя только функции NumPy, без использования каких-либо циклов или дополнительных библиотек?
Что вы пробовали и чего ожидали?
Мне удалось заставить его работать с помощью цикла, но я хотел решить его, используя только функции NumPy. Я пробовал реализовать np.cumsum с масками, но особого прогресса не добился.
Вот решение, которое я придумал с помощью одного цикла:
np.random.seed(100)
a = np.random.randint(0, 5, 10)
print(a)
uniques, first_indices = np.unique(a, return_index=True)
all_occurrences = np.zeros_like(a, dtype=bool)
for i in range(len(a)):
all_occurrences = np.any(a[:i] == a)
all_occurrences[first_indices] = False
print(all_occurrences)
Подробнее здесь: https://stackoverflow.com/questions/792 ... ce-using-n
Как пометить повторяющиеся записи как истинные, начиная со второго появления, используя NumPy? ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как отметить повторяющиеся записи как истинные, начиная с второго явления с помощью Numpy?
Anonymous » » в форуме Python - 0 Ответы
- 5 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как отметить повторяющиеся записи как истинные, начиная с второго явления с помощью Numpy?
Anonymous » » в форуме Python - 0 Ответы
- 8 Просмотры
-
Последнее сообщение Anonymous
-