numpy中腌膜(mask)功能是个十分实用的技巧,可以参考这篇文章。
考虑以下场景:
给定一个数组和一个“集合”,该集合为数字构成的array_like类型,我们需要从该数组中锁定那些属于该集合的元素。
比如给定如下数组a和列表b,那么我们期待得到腌膜c:
a = np.array([
[1,2,3],
[4,5,6],
[7,8,9]
])
b = [3,4,5,6,7]
c = np.array([
[False, False, True],
[ True, True, True],
[ True, False, False]
])
解决办法:
上述问题可以使用np.isin()来解决,其官方介绍如下:
也就是,该函数可以方便地判断数组element中的元素是否属于test_elements,以上述问题为例,其程序如下:
a = np.array([
[1,2,3],
[4,5,6],
[7,8,9]
])
b = [3,4,5,6,7]
print(np.isin(a, b))
[Out]:
[[False False True]
[ True True True]
[ True False False]]