2

助けが必要です) 私は NumPy 配列を持っています:

False False False False
False True  True  False
True  True  True  True
False True  True  False
False False False False

これを取得するにはどうすればよいですか ( Trueを含む最初と最後の行を取得し、それらすべての要素をFalseに設定します)。

False False False False
False False False  False
True  True  True  True
False False False  False
False False False False
4

2 に答える 2

4
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)

nonzeroTrue行のインデックスのタプル (軸ごとに 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)
于 2013-09-15T09:14:44.567 に答える