Olá, estou em dúvida referente ao resize também alterar a forma do meu array, gostaria de saber o que é referido como "forma", já que a alteração do tamanho, já é dado como uma alteração da forma/formato.
Fiquei com esta dúvida.
Olá, estou em dúvida referente ao resize também alterar a forma do meu array, gostaria de saber o que é referido como "forma", já que a alteração do tamanho, já é dado como uma alteração da forma/formato.
Fiquei com esta dúvida.
Olá, Antônio! Tudo bom? Espero que sim.
Apontamento bastante interessante. Podemos começar analisando um array unidimensional, análogo de uma lista simples no Python. Se o método resize
apenas alterasse o tamanho desse array, nós teríamos a quantidade de elementos menor ou maior que o estado inicial, e ele continuaria sem alterar a forma (shape) do array.
Mas a proposta do resize
é modificar o formato do array (shape), fazendo o preenchimento dos elementos se for necessário para o novo formato.
No caso dos arrays bidimensionais, a quantidade de linhas ou colunas, e os elementos que faltarem, serão preenchidos novamente pelo mesmo array, considerando a posição inicial dos índices.
Segue o exemplo retirado da documentação do Numpy:
a=np.array([[0,1],[2,3]])
np.resize(a,(2,3))
>>> array([[0, 1, 2],
[3, 0, 1]])
np.resize(a,(1,4))
>>> array([[0, 1, 2, 3]])
np.resize(a,(2,4))
>>> array([[0, 1, 2, 3],
[0, 1, 2, 3]])
Já o reshape
, aplica apenas uma modificação do formato sem alterar a quantidade original de elementos, então nós escolhemos o novo shape do array, e se quantidade de elementos permitir a modificação, a operaçao é executada. E esta última verificação não acontece no resize
, pois ele altera a quantidade de elementos (tamanho) se for preciso.
Se ainda tiver alguma dúvida, estou por aqui. Ótimos estudos e grande abraço!