Tenho o seguinte 3d- numpy.ndarray
:
import numpy as np
X = np.array([
[[0.0, 0.4, 0.6, 0.0, 0.0],
[0.6, 0.0, 0.0, 0.0, 0.0],
[0.4, 0.0, 0.0, 0.0, 0.0],
[0.0, 0.6, 0.0, 1.0, 0.0],
[0.0, 0.0, 0.4, 0.0, 1.0]],
[[0.1, 0.5, 0.4, 0.0, 0.0],
[0.6, 0.0, 0.0, 0.0, 0.0],
[0.2, 0.0, 0.0, 0.0, 0.0],
[0.1, 0.6, 0.0, 1.0, 0.0],
[0.0, 0.0, 0.4, 0.0, 1.0]]
])
Quero uma nova matriz onde todas as linhas e colunas sejam descartadas onde a diagonal seja igual a 1.
idx = np.diag(X[0]) == 1 # for my implementation it is sufficient to look at X[0]
É importante ressaltar que X.shape[1] == X.shape[2]
, por isso, procuro usar a máscara da seguinte forma
Y = X[:, ~idx, ~idx]
O resultado acima retorna algo diferente da minha saída desejada:
[[0.0, 0.4, 0.6], [0.6, 0.0, 0.0], [0.4, 0.0, 0.0]], [[0.1, 0.5, 0.4], [0.6, 0.0, 0.0], [0.2, 0.0, 0.0]]
Por favor, aconselhe
Provavelmente você pode tentar
ou
np.ix_
o que dá