Outra forma de indexar em Python
Estou seguindo um curso de Aprendizado de Máquina e, em uma revisão da biblioteca numpy, é usado um método de indexação que nunca vi antes. Nós definimos a = np.array([[1,2],[3,4],[5,6]]). Duas novas matrizes são posteriormente criado: np.array([a[0,0], a[1,1], a[2,1]]. Essa é a forma de indexação que conheço. A forma de indexação que eu não sei é o seguinte: print(a[[0,1,2],[0,1,1]]). Alguém poderia me ajudar com uma explicação sobre esta última forma de indexação?
Respostas
Quando os narrays são passados, onde né o número de dimensões do array, eles são usados como índices para as dimensões correspondentes. a[[0,1,2],[0,1,1]]é equivalente a[a[0,0], a[1,1], a[2,1]]
Deixe-me citar vários documentos:
... De cada linha, um elemento específico deve ser selecionado. O índice da linha é apenas [0, 1, 2] e o índice da coluna especifica o elemento a ser escolhido para a linha correspondente, aqui [0, 1, 0]. Usando os dois juntos, a tarefa pode ser resolvida com a indexação avançada:
x = np.array([[1, 2], [3, 4], [5, 6]])
x[[0, 1, 2], [0, 1, 0]]
array([1, 4, 5])
Ele chama a indexação de matriz de inteiros . No seu exemplo, você está acessando os [[0,1,2],[0,1,1]]índices de um array 1x3, chamado a. Isso significa que você está obtendo a:
[
the first element of the first array,contained in this 1x3 array,
the second element of the second array, contained in this big array,
the second element of the third array, contained in the same array
]
Imprimir, você receberá a saída do [1 4 6], porque esses são os elementos em posições especificadas ( (0,0), (1,1), (2,1)). Você pode visualizá-lo como um esquema de colunas e linhas :
[[rows],[colums]] # vertically speaking
Você seleciona as linhas dos itens que deseja na primeira submatriz e as colunas na segunda.