在numpy数组中删除特定值的元素(仅删除一次)

4

我希望能够从一个具有特定值的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。


听起来像是一个 XY 问题。你为什么要试图从一个 numpy 数组中删除任何东西呢? - Mad Physicist
这是一个模式匹配的步骤。然后我继续使用numpy数组。 - Sid
你重新分配整个数组来删除一个元素。听起来遮罩可能是一种更好的潜在方式。 - Mad Physicist
这是正确的。掩码如何使用? - Sid
2个回答

4

您可以简单地选择一个指数:

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

1

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接