如何从 NumPy 数组中删除所有出现的元素?

mlg*_*556 1 arrays numpy scipy python-3.x

标题是不言自明的:我有一个 numpy 数组(比如 ints) [ 1 2 10 2 12 2 ],我想删除所有出现的2,因此结果数组是[ 1 10 12 ]. 我最好尽可能快地执行此操作,因为我使用的是相对较大的数组。

NumPy 有一个被调用的函数,numpy.delete()但它将索引作为参数,而我没有。

编辑:这个问题确实不同于使用条件检查从 numpy 数组中删除某些元素,我猜这是一个更“一般”的情况。但是,从数组中删除出现的想法是非常基本的,值得提出自己的明确问题,所以我保留了这个问题。

Dee*_*ace 6

您可以使用索引:

arr = np.array([1, 2, 10, 2, 12, 2])
print(arr[arr != 2])
# [ 1 10 12]
Run Code Online (Sandbox Code Playgroud)

时机非常好:

from timeit import Timer

arr = np.array(range(5000))
print(min(Timer(lambda: arr[arr != 4999]).repeat(500, 500)))
# 0.004942436999999522
Run Code Online (Sandbox Code Playgroud)