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.
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:
- [[[0, 1, 2, 3, 4],
- [5, 6, 7, 8, 9],
- [10, 11, 12, 13, 14]],
- [[15, 16, 17, 18, 19],
- [20, 21, 22, 23, 24],
- [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.5Artigos semelhantes
- O que é correto, "por favor encontre o anexo" ou "por favor encontre o anexo"?
- Qual é o seu cartão de monstro de atributo YuGiOh Dark favorito e porquê?
- O "Por favor, encontre o documento assinado em anexo" está correcto?
- Como em vídeos onde a distorção de pixels está acontecendo, os pixels distorcidos acompanham o movimento do objeto?