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

问题描述 投票:1回答:2

我想从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。

python arrays numpy
2个回答
0
投票

您可以简单地选择其中一个索引:

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

0
投票

如果您知道至少有一个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
© www.soinside.com 2019 - 2024. All rights reserved.