arr[arr.any(axis=1).nonzero()[0][[0,-1]]] = False
这个怎么运作:
In [19]: arr
Out[19]:
array([[False, False, False, False],
[False, True, True, False],
[ True, True, True, True],
[False, True, True, False],
[False, False, False, False]], dtype=bool)
arr.any(axis=1)
查找哪些行包含一个True
值:
In [20]: arr.any(axis=1)
Out[20]: array([False, True, True, True, False], dtype=bool)
nonzero
返回行索引的元组(每个轴一个项目)True
:
In [21]: arr.any(axis=1).nonzero()
Out[21]: (array([1, 2, 3]),)
我们可以使用索引来查找包含True
值的第一行和最后一行的索引:
In [22]: arr.any(axis=1).nonzero()[0][[0,-1]]
Out[22]: array([1, 3])
最后,我们可以将这些行设置False
为
In [23]: arr[arr.any(axis=1).nonzero()[0][[0,-1]]] = False
In [24]: arr
Out[24]:
array([[False, False, False, False],
[False, False, False, False],
[ True, True, True, True],
[False, False, False, False],
[False, False, False, False]], dtype=bool)