nesse momento é muito importante testar e ver na documentação
o que o numpy diz sobre o paremetro de any()
:
Axis or axes along which a logical OR reduction is performed
tendo essa descrição podemos ir testando pra realmente entender o que esta acontecendo, para facilitar vamos pegar só os indices 0 e 1 do C
[[
[[False, False],[False, False]],
[[False, False],[False, False]],
[[False, True],[ True, False]]
],
[
[[False, False],[False, False]],
[[False, False],[False, False]],
[[False, False],[False, True]]
]]
como o any esta com o parametro 3, vai verificar no axes/axis 3 (ou seja o resultado vai ter uma dimensão a menos do q o atual
[[False, False],[False, False]], -> [[F com F da F],[F com F da F]]
[[False, False],[False, False]], -> [[F com F da F],[F com F da F]]
[[False, True],[ True, False]], -> [[F com T da T],[T com F da T]]
],
[
[[False, False],[False, False]], -> [[F com F da F],[F com F da F]]
[[False, False],[False, False]], -> [[F com F da F],[F com F da F]]
[[False, False],[False, True]] -> [[F com F da F],[F com T da T]]
]]
o resultado dessa operação é
[[[False, False],
[False, False],
[ True, True]],
[[False, False],
[False, False],
[False, True]]]
antes tinha lista com uma lista dentro, agora essa lista de dentro foi transformado em boleano pela operação any()
, aplicando essa logica algumas vezes de forma encadeada, any diminui uma dimensão -> any diminui uma dimensão - > all diminui uma dimensão resulta em uma lista com uma unica dimensão
array([ True, False, True, True, False, False, True, False])
o where()
tem q dar uma condição para aplicar caso a condição seja verdadeira, como essa lista é só de boleanos então vai retornar o indice onde é verdadeiro [0, 2, 3, 6]
como não manjo muito de numpy, a questão 1 ficou de fora