检查NumPy数组中值是否存在的最有效方法是什么?
我有一个非常大的NumPy数组
1 40 3
4 50 4
5 60 7
5 49 6
6 70 8
8 80 9
8 72 1
9 90 7
....
我想检查一下这个数组的第一列中是否存在某个值。我有一些自己想出来的方法(比如逐行检查),但是考虑到数组的大小,我想找一个更高效的方法。
谢谢!
8 个回答
49
要检查多个值,你可以使用numpy.in1d()这个函数,它的作用类似于Python中的关键字in,不过它是逐个元素进行检查的。如果你的数据是排好序的,可以使用numpy.searchsorted()这个函数:
import numpy as np
data = np.array([1,4,5,5,6,8,8,9])
values = [2,3,4,6,7]
print np.in1d(values, data)
index = np.searchsorted(data, values)
print data[index] == values
65
对我来说,最明显的就是:
np.any(my_array[:, 0] == value)
110
怎么样呢
if value in my_array[:, col_num]:
do_whatever
补充:我觉得 __contains__
的实现方式和 @detly 的版本是一样的