1
resposta

Sintaxes semelhantes do numpy resultou diferente

Usei:

dataset = np.column_stack((anos, km, valor))
dataset

array([[2.0030000e+03, 4.4410000e+04, 8.8078640e+04],
       [1.9910000e+03, 5.7120000e+03, 1.0616194e+05],
       [1.9900000e+03, 3.7123000e+04, 7.2832160e+04],
       ...
       [2.0070000e+03, 7.1280000e+04, 1.3762762e+05],
       [2.0140000e+03, 2.7505000e+04, 5.1759580e+04],
       [1.9910000e+03, 2.9981000e+04, 5.1667060e+04],
       [2.0020000e+03, 5.2637000e+04, 6.8934030e+04],
       [1.9960000e+03, 7.6850000e+03, 1.2211090e+05],
       [1.9920000e+03, 5.0188000e+04, 9.0381470e+04]])

E depois: np.std(dataset[:][2]), resultando em 28921.50954714655

Mas depois eu fiz np.std(dataset[:, 2]), resultando em 29754.101150388564

Por que ficou diferente se a sintaxe da indexação resultaria no mesmo?

1 resposta

Olá, Akhenaton. Tudo bem?

Para verificarmos os valores resultantes de cada indexação/slicing, podemos executar cada um dos dois.

Vamos executar a primeira alternativa:

dataset[:][2]

Saída: array([ 1990. , 37123. , 72832.16])

Agora, vamos executar a outra alternativa:

dataset[:, 2]

Saída:

array([ 88078.64, 106161.94, 72832.16, 124549.07, 92612.1 , 97497.73,

56445.2 , 112310.44, 120716.27, 76566.49, 71647.59, 73919.53,

112732.99, 53183.38, 127488.42, 59910.4 , 61118.59, 88552.39,

62696.69, 101726.3 , 106147.38, 94564.4 , 133529.84, 125684.65,

121596.21, 71367.1 , 95347.75, 105432.84, 57045.27, 120432.7 ,

...

76310.01, 120481.74, 54559.18, 92957.64, 127810.06, 73311.75,

65138.03, 90141.47, 71160.36, 67539.79, 67664.86, 68652.16,

114728.74, 141645.08, 126247.84, 128852.21, 132384.76, 129415.33,

89536.82, 87975.3 , 77675.79, 58881.67, 55081.99, 118826.44,

137627.62, 51759.58, 51667.06, 68934.03, 122110.9 , 90381.47])

Como podemos ver, os resultados são diferentes. Então, o que está acontecendo aqui?

No caso do dataset[:][2], estamos selecionando todas as linhas e, de todas as linhas, escolhemos apenas a linha do índice 2. Por isso temos esse resultado curtinho.

No caso do dataset[:, 2], estamos selecionando todas as linhas, porém, queremos apenas o índice 2 de cada linha, ou seja, o último valor de cada linha. Por isso recebemos como retorno um array de 1 dimensão, pois estamos pedindo apenas os valores do índice 2 de cada linha.

Por estes motivos, você recebeu resultados diferentes.

 

Espero ter ajudado, Akhenaton. Se tiver mais alguma dúvida, estou à disposição. Bons estudos =)

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!