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
行のインデックスのタプル (軸ごとに 1 つの項目) を返します。
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)