有人遇到过这个问题吗?假设您有两个如下所示的数组
a = array([1,2,3,4,5,6])
b = array([1,4,5])
Run Code Online (Sandbox Code Playgroud)
有没有办法比较b中存在的元素?例如,
c = a == b # Wishful example here
print c
array([1,4,5])
# Or even better
array([True, False, False, True, True, False])
Run Code Online (Sandbox Code Playgroud)
我试图避免循环,因为它需要数百万元素的年龄.有任何想法吗?
干杯
ete*_*teq 52
实际上,有一个比这些更简单的解决方案:
import numpy as np
a = array([1,2,3,4,5,6])
b = array([1,4,5])
c = np.in1d(a,b)
Run Code Online (Sandbox Code Playgroud)
得到的c然后是:
array([ True, False, False, True, True, False], dtype=bool)
Run Code Online (Sandbox Code Playgroud)
unu*_*tbu 18
使用np.intersect1d.
#!/usr/bin/env python
import numpy as np
a = np.array([1,2,3,4,5,6])
b = np.array([1,4,5])
c=np.intersect1d(a,b)
print(c)
# [1 4 5]
Run Code Online (Sandbox Code Playgroud)
请注意,如果a或b具有非唯一元素,则np.intersect1d会给出错误的答案.在那种情况下使用np.intersect1d_nu.
还有np.setdiff1d,setxor1d,setmember1d和union1d.请参阅 Numpy示例列表与Doc