Oi, Vinicius! Tudo bem com você?
Os dois códigos são seleções executadas de formas diferentes, por isso, obtemos resultados que podem não ser os desejados. Considerando que você está trabalhando com um array numpy, gerei um array de valores inteiros aleatórios com numpy utilizando o método random.randint
:
import numpy as np
matriz = np.random.randint(0,100, size = (5, 5))
matriz
Temos como resultado a matriz:
array([[73, 61, 57, 58, 48],
[ 8, 66, 96, 32, 14],
[48, 20, 1, 56, 46],
[39, 26, 19, 47, 38],
[69, 2, 95, 33, 92]])
A estrutura do código 2 realiza uma seleção que é definida por array[ linhas , colunas ]
, como você mesmo especificou. Essa forma é a correta em se utilizar quando desejamos realizar seleção de múltiplas colunas e linhas em uma array, desse modo devemos utilizar essa forma quando desejamos selecionar valores no array. Por conta disso, quando executamos, matriz[:,1:4]
, nos é retornada todas as linhas das colunas 1
, 2
e 3
:
matriz[:,1:4]
-----------------------------------
array([[61, 57, 58],
[66, 96, 32],
[20, 1, 56],
[26, 19, 47],
[ 2, 95, 33]])
Bem, já o código 1 nos mostra uma seleção da seleção. Com essa expressão quero informar que primeiro é feita uma seleção completa da matriz com matriz[:]
e o resultado dessa seleção é selecionado novamente, mas dessa vez, apenas as linhas 1
, 2
e 3
, pois sabemos que a estrutura de uma seleção é dada por array[ linhas , colunas ]
- e se temos apenas a especificação das linhas, teremos apenas as linhas selecionadas.
matriz[:][1:4]
-----------------------------------
array([[ 8, 66, 96, 32, 14],
[48, 20, 1, 56, 46],
[39, 26, 19, 47, 38]])
Para ficar mais claro, faremos outro exemplo, farei a seleção das linhas 0
, 1
e 2
:
matriz[:3]
-----------------------------------
array([[73, 61, 57, 58, 48],
[ 8, 66, 96, 32, 14],
[48, 20, 1, 56, 46]])
Agora irei realizar outra seleção, selecionando apenas as linhas 0
e 1
do array adicionando outro seletor ao final do meu array:
matriz[:3][:2]
-----------------------------------
array([[73, 61, 57, 58, 48],
[ 8, 66, 96, 32, 14]])
Imagina também que uma leitura no tópico Dúvida em seleção com arrays também pode ajudar com sua dúvida ;-)
Espero que eu tenha te ajudado, se a dúvida persistir, você pode me comunicar aqui.
Bons estudos!