Удалить элемент определенного значения в массиве numpy один раз - PullRequest
1 голос
/ 17 октября 2019

Я хотел бы удалить элемент из массива с определенным значением. Тем не менее, в случае, когда есть несколько элементов с одинаковым значением, я хочу удалить только одно вхождение (не имеет значения, какое). То есть:

import numpy as np
a = np.array([1, 1, 2, 6, 8, 8, 8, 9])

Как удалить один экземпляр из 8? В частности,

a_new = np.delete(a, np.where(a == 8))
print(a_new)

удаляет все 8.

Ответы [ 2 ]

2 голосов
/ 17 октября 2019

Вы можете просто выбрать один из индексов:

In [3]: np.delete(a, np.where(a == 8)[0][0])
Out[3]: array([1, 1, 2, 6, 8, 8, 9])
1 голос
/ 17 октября 2019

Если вы знаете, что есть хотя бы один 8, вы можете использовать argmax:

np.delete(a,(a==8).argmax())
# array([1, 1, 2, 6, 8, 8, 9])

Если нет, вы все равно можете использовать этот метод, но вам нужно сделать одну проверку:

idx = (a==8).argmax()
if a[idx] == 8:
    result = np.delete(a,idx)
else: # no 8 in a
    # complain
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...