Python 删除numpy数组中某个值的元素一次

Python 删除numpy数组中某个值的元素一次,python,arrays,numpy,Python,Arrays,Numpy,我想从具有特定值的numpy数组中删除一个元素。但是,如果有多个相同值的元素,我只想删除一个事件(不管是哪一个)。即: 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个 您只需选择一个索引: In [3]: np.delete(a, np.where(a == 8)[0][0])

我想从具有特定值的numpy数组中删除一个元素。但是,如果有多个相同值的元素,我只想删除一个事件(不管是哪一个)。即:

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个

您只需选择一个索引:

In [3]: np.delete(a, np.where(a == 8)[0][0])
Out[3]: array([1, 1, 2, 6, 8, 8, 9])

您只需选择一个索引:

In [3]: np.delete(a, np.where(a == 8)[0][0])
Out[3]: array([1, 1, 2, 6, 8, 8, 9])

如果您知道至少有一个
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

如果您知道至少有一个
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

听起来像个xy问题。首先,为什么要尝试从numpy数组中删除任何内容?这是一个模式匹配步骤。然后我继续使用numpy数组,重新分配整个数组以删除一个元素。听起来掩蔽可能是一种更好的方法,没错。如何使用掩蔽?听起来像是xy问题。首先,为什么要尝试从numpy数组中删除任何内容?这是一个模式匹配步骤。然后我继续使用numpy数组,重新分配整个数组以删除一个元素。听起来掩蔽可能是一种更好的方法,没错。如何使用掩蔽?此方法可用于删除元素
[1,8]
?此方法可用于删除元素
[1,8]