1

画像内の長方形を検索したいと思います。写真は PIL から収集されました。これは、各項目が色の 3 つのエントリを持つリストである 2 次元配列を取得することを意味します。

私が使用している検索された色の長方形がどこにあるかを取得するにはnp.equal. 縮小した例を次に示します。

>>> l = np.array([[1,1], [2,1], [2,2], [1,0]])
>>> np.equal(l, [2,1])  # where [2,1] is the searched color
array([[False,  True],
   [ True,  True],
   [ True, False],
   [False, False]], dtype=bool)

しかし、私は期待していました:

array([False, True, False, False], dtype=bool)

また

array([[False,  False],
   [ True,  True],
   [ False, False],
   [False, False]], dtype=bool)

ネストされたリスト比較を行うにはどうすればよいnumpyですか?

np.where注:の結果から四角形のインデックスを抽出したいと思いますnp.equal

4

1 に答える 1

4

all2 番目の軸に沿ってメソッドを使用できます。

>>> result = numpy.array([[1, 1], [2, 1], [2, 2], [1, 0]]) == [2, 1]
>>> result.all(axis=1)
array([False,  True, False, False], dtype=bool)

そして、インデックスを取得するには:

>>> result.all(axis=1).nonzero()
(array([1]),)

渡される引数の数に応じて2 つの非常に異なることnonzeroを行うwhereため、私はこれを好みます。独自の機能が必要なときに使用します。の動作が必要な場合は、明示的に使用します。wherewherenonzerononzero

于 2012-12-07T18:55:15.297 に答える