最近又在写科学计算的代码了。今天偶然发现一个 Numpy 中的一个小问题,不注意的话还是很容易踩坑的。
通常来说,检查一个类似列表的对象中是否有某个元素,最直接的办法是用 in
。这个方法对列表、字典、元组等都适用,对一维的 ndarray 对象也适用,例如:
a = [1, 2, 3]
print(4 in a)
b = np.array(a)
print(4 in b)
结果是False False
但是,如果这个 ndarray 是二维的数组,结果就非常奇怪了:
a = [[0,0], [0,1]]
print([0,2] in a …