Casa > P > Por Que Eu Recebo "Objeto Numpy.ndarray Não Tem Erro De Atributo Em Anexo"?

Por que eu recebo "objeto numpy.ndarray não tem erro de atributo em anexo"?

O erro é exatamente o que diz na lata: o objeto numpy.ndarray da NumPy não tem um apêndice de atributo definido em sua API.

main-qimg-6a85da904c6c95e483d68b16f1d853ea

O erro em questão, para referência.

Podemos começar perguntando, o que é um objeto numpy.ndarray? NumPy é uma biblioteca incrivelmente útil para manipulação de dados em Python, que você presumivelmente baixou e importou para o seu projeto Python. Ela contém, entre outras coisas, a classe numpy.ndarray. "ndarray" significa N-dimensional array.

Se você já programou em uma linguagem de tipo estático como Java ou Rust ou C, o conceito de arrays será muito familiar. Um array unidimensional contém algum número de objetos, todos do mesmo tipo (por exemplo [1, 3, 2] ou [0.4, 0.55, 3.14159] ou ["foo", "bar", "baz"]). Fazer arrays contendo o mesmo tipo significa que é mais fácil alocar memória para o array, pois todos os elementos terão o mesmo tamanho em memória. Pela mesma razão, cada nível de uma matriz multidimensional conterá o mesmo número de matrizes de dimensões inferiores.

Consider this 3-dimensional array:

  1. [[[0, 1, 2, 3, 4],  
  2. [5, 6, 7, 8, 9],  
  3. [10, 11, 12, 13, 14]],  
  4. [[15, 16, 17, 18, 19],  
  5. [20, 21, 22, 23, 24],  
  6. [25, 26, 27, 28, 29]]] 

Esta matriz contém 2 matrizes de 3 matrizes de 5 números inteiros. Em NumPy, nós chamamos sua forma (2, 3, 5). A forma de um array é fixa.[1][2] Ao contrário das arrays dinâmicas que são listas Python nativas,[3] ndarrays não podem mudar em tamanho e forma. (Você pode, entretanto, alterar valores dentro de um ndarray, desde que as substituições sejam do mesmo tipo.)

Em Python, um atributo é qualquer coisa que segue um ponto após o objeto, que inclui atributos de dados (arr.shape) ou métodos (arr.flatten()). numpy.ndarray.append() simplesmente não existe.

Existe uma maneira de (aparentemente) aumentar o tamanho de um ndarray. Você pode criar um novo array de um tamanho maior e copiar os elementos um a um para o novo array. (Este método é usado para implementar arrays dinâmicos.) NumPy tem, de fato, métodos para eles. Eles são numpy.append, numpy.insert, e numpy.concatenate. Note que estes métodos são armazenados no módulo numpy e não na classe numpy.ndarrays, daí porque não há nenhum atributo append definido para o objeto ndarray. Meu palpite é que isto é para esclarecer que um novo array está sendo gerado e retornado, não que o array original está sendo modificado. Em Python, um atributo é qualquer coisa que segue um ponto após o objeto, que inclui atributos de dados (arr.shape) e métodos (arr.flatten()).[4] Para ndarrays, arr.append() simplesmente não existe.

Footnotes

[1] O array N-dimensional ([2] NumPy: o básico absoluto para iniciantes[3] Tipos embutidos - Documentação Python 3.8.5[4] 9. Classes - Documentação da Python 3.8.5

De Kappenne Seufer

Como fazer um telefone Android não alcançável sem desligá-lo :: Porque é que ainda há líderes de claque em trajes desnatados no desporto?