Teste se uma matriz numpy é membro de uma lista de matrizes numpy e remova-a da lista

Quando testar se um array numpyc é membro de uma lista de matrizes numpyCNTS:

import numpy as np

c = np.array([[[ 75, 763]],
              [[ 57, 763]],
              [[ 57, 749]],
              [[ 75, 749]]])

CNTS = [np.array([[[  78, 1202]],
                  [[  63, 1202]],
                  [[  63, 1187]],
                  [[  78, 1187]]]),
        np.array([[[ 75, 763]],
                  [[ 57, 763]],
                  [[ 57, 749]],
                  [[ 75, 749]]]),
        np.array([[[ 72, 742]],
                  [[ 58, 742]],
                  [[ 57, 741]],
                  [[ 57, 727]],
                  [[ 58, 726]],
                  [[ 72, 726]]]),
        np.array([[[ 66, 194]],
                  [[ 51, 194]],
                  [[ 51, 179]],
                  [[ 66, 179]]])]

print(c in CNTS)

Eu recebo

ValueError: O valor de verdade de uma matriz com mais de um elemento é ambíguo. Use a.any () ou a.all ()

No entanto, a resposta é bastante clara:c é exatamenteCNTS[1], entãoc in CNTS deve retornar True!

Como testar corretamente se uma matriz numpy é membro de uma lista de matrizes nump

O mesmo problema acontecequando remover:

CNTS.remove(c)

ValueError: O valor de verdade de uma matriz com mais de um elemento é ambíguo. Use a.any () ou a.all ()

Aplicação: teste se umopencv contorno (matriz numpy) é membro de uma lista de contornos, veja, por exemplo,Remova um contorno aberto de uma lista de contornos.

questionAnswers(3)

yourAnswerToTheQuestion