我尝试在python中执行此操作,但是我收到错误:
import numpy as np
array_to_filter = np.array([1,2,3,4,5])
equal_array = np.array([1,2,5,5,5])
array_to_filter[equal_array]
,结果是:
IndexError: index 5 is out of bounds for axis 0 with size 5
是什么给出的?我以为我在这里做了正确的操作。
我希望如果我这样做
array_to_filter[equal_array]
它会返回
np.array([1,2,5])
如果我没有走上正轨,我将如何做到这一点?
答案 0 :(得分:0)
在最后一个语句中,数组的索引是1,2,5,5和5.索引5指的是数组中的第6个元素,而您只有5个元素。 array_to_filter[5]
不存在。
[i for i in np.unique(equal_array) if i in array_to_filter]
会返回你想要的答案。如果它也存在于array_to_filter
中,则返回equal_array中的每个唯一值答案 1 :(得分:0)
如果array_to_filter
保证具有唯一值,您可以执行以下操作:
>>> array_to_filter[np.in1d(array_to_filter, equal_array)]
array([1, 2, 5])
对于1-D序列,documentation:np.in1d
可以被视为python关键字in
的元素功能版本。 in1d(a, b)
大致相当于np.array([item in b for item in a])
。