Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

NumPy cópia rasa

Podemos criar cópias rasas de uma lista em python das seguintes formas, certo? :

lista = [1, 2, 3]
copia_rasa1 = lista.copy()
copia_rasa2 = lista[:]

Podemos dizer o mesmo para arrays NumPy? Pergunto isso pois ocorreu o seguinte erro quando utilizei '[:]' (e funcionou quando substituí por copy() ):

dados = np.array([[44410.,  5712., 37123.,     0., 25757.],
                       [ 2003.,  1991.,  1990.,  2019.,  2006.]])
dados_new = dados[:]
dados_new.resize((3,5), refcheck=False)

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-132-94f7ce8b05a0> in <module>()
----> 1 dados_new.resize((3,5), refcheck=False)
      2 # dados_new

ValueError: cannot resize this array: it does not own its data
1 resposta
solução!

Olá Francisco.

Como podemos ver na documentação, embora o slice [ ] e o copy tenham comportamentos analogos, o slice na verdade gera uma view no array ao contrario do copy que gera realmente outro local na memoria.

Para entender melhor as diferenças entre Views e Copies recomendo essa leitura.

Esse é o motivo do erro que estar aparecendo e infelizmente mesmo utilizando o parâmetro do refcheck=False, não conseguimos utilizar uma view para fazer o resize.

Espero ter te ajudado a entender, mas se ficou alguma duvida não hesite em perguntar.

Bons Estudos.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software