Baixe o app para aproveitar ainda mais
Prévia do material em texto
13/01/2022 06:32 NumPy: the absolute basics for beginners — NumPy v1.22 Manual https://numpy.org/doc/stable/user/absolute_beginners.html 1/29 NumPy: o básico absoluto para iniciantes Bem-vindo ao guia absoluto para iniciantes do NumPy! Se você tiver comentários ou sugestões, não hesite em entrar em contato ! Bem-vindo ao NumPy! NumPy ( Numeric Python ) é uma biblioteca Python de código aberto que é usada em quase todos os campos da ciência e engenharia. É o padrão universal para trabalhar com dados numéricos em Python e está no centro dos ecossistemas cientí�cos Python e PyData. Os usuários do NumPy incluem todos, desde codi�cadores iniciantes até pesquisadores experientes que fazem pesquisa e desenvolvimento cientí�co e industrial de última geração. A API NumPy é usada extensivamente em Pandas, SciPy, Matplotlib, scikit-learn, scikit-image e na maioria dos outros pacotes de ciência de dados e Python cientí�cos. A biblioteca NumPy contém matrizes multidimensionais e estruturas de dados de matriz (você encontrará mais informações sobre isso em seções posteriores). Ele fornece ndarray , um objeto de array n-dimensional homogêneo, com métodos para operar com e�ciência nele. NumPy pode ser usado para realizar uma ampla variedade de operações matemáticas em arrays. Ele adiciona poderosas estruturas de dados ao Python que garantem cálculos e�cientes com arrays e matrizes e fornece uma enorme biblioteca de funções matemáticas de alto nível que operam nesses arrays e matrizes. Saiba mais sobre o NumPy aqui ! Instalando NumPy Para instalar o NumPy, é altamente recomendável usar uma distribuição cientí�ca do Python. Se você estiver procurando as instruções completas para instalar o NumPy em seu sistema operacional, consulte Instalando o NumPy . Se você já possui o Python, pode instalar o NumPy com: conda install numpy ou pip install numpy Se você ainda não tem o Python, considere usar o Anaconda . É a maneira mais fácil de começar. O bom de obter esta distribuição é o fato de que você não precisa se preocupar muito em instalar separadamente o NumPy ou qualquer um dos principais pacotes que você usará para suas análises de dados, como pandas, Scikit-Learn, etc. Como importar NumPy Para acessar o NumPy e suas funções, importe-o em seu código Python assim: import numpy as np Encurtamos o nome importado nppara melhor legibilidade do código usando NumPy. Esta é uma convenção amplamente adotada que você deve seguir para que qualquer pessoa que trabalhe com seu código possa entendê-lo facilmente. Pesquise nos documento O que é NumPy? Instalação Início rápido do NumPy NumPy: o básico absoluto para iniciantes Fundamentos do NumPy Diversos NumPy para usuários do MATLAB Construindo a partir da fonte Usando NumPy C-API Tutoriais NumPy NumPy Como fazer Para autores de pacotes downstream Guia do usuário e manual de referência do F2PY Glossário Documentação sob o capô para desenvolvedores Relatando bugs Notas de lançamento Licença NumPy https://numpy.org/community/ https://numpy.org/doc/stable/user/whatisnumpy.html#whatisnumpy https://numpy.org/install/ https://www.anaconda.com/ https://numpy.org/doc/stable/user/whatisnumpy.html https://numpy.org/install/ https://numpy.org/doc/stable/user/quickstart.html https://numpy.org/doc/stable/user/basics.html https://numpy.org/doc/stable/user/misc.html https://numpy.org/doc/stable/user/numpy-for-matlab-users.html https://numpy.org/doc/stable/user/building.html https://numpy.org/doc/stable/user/c-info.html https://numpy.org/numpy-tutorials/features.html https://numpy.org/doc/stable/user/howtos_index.html https://numpy.org/doc/stable/user/depending_on_numpy.html https://numpy.org/doc/stable/f2py/index.html https://numpy.org/doc/stable/glossary.html https://numpy.org/doc/stable/dev/underthehood.html https://numpy.org/doc/stable/bugs.html https://numpy.org/doc/stable/release.html https://numpy.org/doc/stable/license.html 13/01/2022 06:32 NumPy: the absolute basics for beginners — NumPy v1.22 Manual https://numpy.org/doc/stable/user/absolute_beginners.html 2/29 Lendo o código de exemplo Se você ainda não se sente à vontade para ler tutoriais que contêm muito código, talvez não saiba como interpretar um bloco de código parecido com este: >>> a = np.arange(6) >>> a2 = a[np.newaxis, :] >>> a2.shape (1, 6) Se você não estiver familiarizado com este estilo, é muito fácil de entender. Se vir >>>, você está vendo input ou o código que você inseriria. Tudo o que não tem >>>na frente é output , ou os resultados da execução do seu código. Este é o estilo que você vê quando executa pythonna linha de comando, mas se estiver usando o IPython, poderá ver um estilo diferente. Observe que não faz parte do código e causará um erro se digitado ou colado no shell do Python. Ele pode ser digitado ou colado com segurança no shell do IPython; o >>> é ignorado. Qual é a diferença entre uma lista Python e uma matriz NumPy? O NumPy oferece uma enorme variedade de maneiras rápidas e e�cientes de criar matrizes e manipular dados numéricos dentro delas. Embora uma lista Python possa conter diferentes tipos de dados em uma única lista, todos os elementos em uma matriz NumPy devem ser homogêneos. As operações matemáticas que devem ser executadas em arrays seriam extremamente ine�cientes se os arrays não fossem homogêneos. Por que usar NumPy? As matrizes NumPy são mais rápidas e compactas do que as listas do Python. Uma matriz consome menos memória e é conveniente de usar. O NumPy usa muito menos memória para armazenar dados e fornece um mecanismo para especi�car os tipos de dados. Isso permite que o código seja otimizado ainda mais. O que é uma matriz? Um array é uma estrutura de dados central da biblioteca NumPy. Uma matriz é uma grade de valores e contém informações sobre os dados brutos, como localizar um elemento e como interpretar um elemento. Possui uma grade de elementos que podem ser indexados de várias maneiras . Os elementos são todos do mesmo tipo, chamados de array dtype. Um array pode ser indexado por uma tupla de inteiros não negativos, por booleanos, por outro array ou por inteiros. O rankda matriz é o número de dimensões. O shapeda matriz é uma tupla de inteiros que fornece o tamanho da matriz ao longo de cada dimensão. Uma maneira de inicializar matrizes NumPy é a partir de listas do Python, usando listas aninhadas para dados de duas dimensões ou mais. Por exemplo: >>> a = np.array([1, 2, 3, 4, 5, 6]) ou: >>> a = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]) Podemos acessar os elementos do array usando colchetes. Quando você estiver acessando elementos, lembre-se que a indexação no NumPy começa em 0. Isso signi�ca que se você quiser acessar o primeiro elemento em seu array, você estará acessando o elemento “0”. https://numpy.org/doc/stable/user/quickstart.html#quickstart-indexing-slicing-and-iterating 13/01/2022 06:32 NumPy: the absolute basics for beginners — NumPy v1.22 Manual https://numpy.org/doc/stable/user/absolute_beginners.html 3/29 >>> print(a[0]) [1 2 3 4] Mais informações sobre arrays Esta seção abrangeEsta seção abrange , , , ,1D array2D arrayndarrayvectormatrix Ocasionalmente, você pode ouvir uma matriz chamada de “ndarray”, que é a abreviação de “matriz N- dimensional”. Uma matriz N-dimensional é simplesmente uma matriz com qualquer número de dimensões. Você também pode ouvir 1-D ou array unidimensional, 2-D ou array bidimensional e assim por diante. A ndarrayclasse NumPy é usada para representar matrizes e vetores. Um vetor é um array com uma única dimensão (não há diferença entre vetores de linha e coluna), enquanto uma matriz se refere a um array com duas dimensões. Para matrizes dimensionais 3-D ou superiores, o termo tensor também é comumente usado. Quais são os atributos de um array? Uma matriz geralmente é um contêiner de tamanho �xo de itens do mesmo tipo e tamanho. O número de dimensões e itens em uma matriz é de�nido por sua forma.A forma de uma matriz é uma tupla de inteiros não negativos que especi�cam os tamanhos de cada dimensão. No NumPy, as dimensões são chamadas de eixos . Isso signi�ca que, se você tiver uma matriz 2D que se pareça com isso: [[0., 0., 0.], [1., 1., 1.]] Sua matriz tem 2 eixos. O primeiro eixo tem um comprimento de 2 e o segundo eixo tem um comprimento de 3. Assim como em outros objetos de contêiner do Python, o conteúdo de um array pode ser acessado e modi�cado indexando ou fatiando o array. Ao contrário dos objetos de contêiner típicos, arrays diferentes podem compartilhar os mesmos dados, portanto, as alterações feitas em um array podem ser visíveis em outro. Os atributos do array re�etem informações intrínsecas ao próprio array. Se você precisar obter, ou mesmo de�nir, propriedades de um array sem criar um novo array, muitas vezes poderá acessar um array por meio de seus atributos. Leia mais sobre atributos de array aqui e aprenda sobre objetos de array aqui . Como criar um array básico Esta seção abrangeEsta seção abrange np.array() , np.zeros(), np.ones(), np.empty(), np.arange(), np.linspace(),dtype Para criar um array NumPy, você pode usar a função np.array(). Tudo o que você precisa fazer para criar um array simples é passar uma lista para ele. Se desejar, você também pode especi�car o tipo de dados em sua lista. Você pode encontrar mais informações sobre tipos de dados aqui . >>> import numpy as np >>> a = np.array([1, 2, 3]) Você pode visualizar seu array desta forma: https://numpy.org/doc/stable/reference/arrays.ndarray.html#arrays-ndarray https://numpy.org/doc/stable/reference/arrays.html#arrays https://numpy.org/doc/stable/reference/arrays.dtypes.html#arrays-dtypes 13/01/2022 06:32 NumPy: the absolute basics for beginners — NumPy v1.22 Manual https://numpy.org/doc/stable/user/absolute_beginners.html 4/29 Esteja ciente de que essas visualizações destinam-se a simpli�car ideias e fornecer uma compreensão básica dos conceitos e mecânica do NumPy. Arrays e operações de array são muito mais complicados do que são capturados aqui! Além de criar um array a partir de uma sequência de elementos, você pode facilmente criar um array preenchido com 0's: >>> np.zeros(2) array([0., 0.]) Ou um array preenchido com 1's: >>> np.ones(2) array([1., 1.]) Ou até mesmo uma matriz vazia! A função emptycria um array cujo conteúdo inicial é aleatório e depende do estado da memória. A razão para usar emptyover zeros(ou algo semelhante) é a velocidade - apenas certi�que-se de preencher todos os elementos depois! >>> # Create an empty array with 2 elements >>> np.empty(2) array([ 3.14, 42. ]) # may vary Você pode criar uma matriz com um intervalo de elementos: >>> np.arange(4) array([0, 1, 2, 3]) E até mesmo uma matriz que contém um intervalo de intervalos uniformemente espaçados. Para fazer isso, você especi�cará o primeiro número , o último número e o tamanho da etapa . >>> np.arange(2, 9, 2) array([2, 4, 6, 8]) Você também pode usar np.linspace()para criar uma matriz com valores espaçados linearmente em um intervalo especi�cado: >>> np.linspace(0, 10, num=5) array([ 0. , 2.5, 5. , 7.5, 10. ]) Especi�cando seu tipo de dados Embora o tipo de dados padrão seja ponto �utuante ( np.float64), você pode especi�car explicitamente qual tipo de dados deseja usando a dtypepalavra - chave. >>> x = np.ones(2, dtype=np.int64) >>> x array([1, 1]) Saiba mais sobre como criar matrizes aqui Adicionando, removendo e classificando elementos https://numpy.org/doc/stable/user/quickstart.html#quickstart-array-creation 13/01/2022 06:32 NumPy: the absolute basics for beginners — NumPy v1.22 Manual https://numpy.org/doc/stable/user/absolute_beginners.html 5/29 Esta seção abrangeEsta seção abrange np.sort() ,np.concatenate() Classi�car um elemento é simples com np.sort(). Você pode especi�car o eixo, tipo e ordem ao chamar a função. Se você começar com esta matriz: >>> arr = np.array([2, 1, 5, 3, 7, 4, 6, 8]) Você pode classi�car rapidamente os números em ordem crescente com: >>> np.sort(arr) array([1, 2, 3, 4, 5, 6, 7, 8]) Além de sort, que retorna uma cópia ordenada de um array, você pode usar: argsort, que é uma classi�cação indireta ao longo de um eixo especi�cado, lexsort, que é uma classi�cação estável indireta em várias chaves, searchsorted, que encontrará elementos em uma matriz classi�cada e partition, que é uma ordenação parcial. Para ler mais sobre como classi�car uma matriz, consulte: sort. Se você começar com esses arrays: >>> a = np.array([1, 2, 3, 4]) >>> b = np.array([5, 6, 7, 8]) Você pode concatená-los com np.concatenate(). >>> np.concatenate((a, b)) array([1, 2, 3, 4, 5, 6, 7, 8]) Ou, se você começar com esses arrays: >>> x = np.array([[1, 2], [3, 4]]) >>> y = np.array([[5, 6]]) Você pode concatená-los com: >>> np.concatenate((x, y), axis=0) array([[1, 2], [3, 4], [5, 6]]) Para remover elementos de um array, é simples usar a indexação para selecionar os elementos que você deseja manter. Para ler mais sobre concatenar, consulte: concatenate. Como você sabe a forma e o tamanho de uma matriz? Esta seção abrangeEsta seção abrange ndarray.ndim , ndarray.size,ndarray.shape ndarray.ndim lhe dirá o número de eixos, ou dimensões, da matriz. ndarray.sizelhe dirá o número total de elementos da matriz. Este é o produto dos elementos da forma da matriz. https://numpy.org/doc/stable/reference/generated/numpy.argsort.html#numpy.argsort https://numpy.org/doc/stable/reference/generated/numpy.lexsort.html#numpy.lexsort https://numpy.org/doc/stable/reference/generated/numpy.searchsorted.html#numpy.searchsorted https://numpy.org/doc/stable/reference/generated/numpy.partition.html#numpy.partition https://numpy.org/doc/stable/reference/generated/numpy.sort.html#numpy.sort https://numpy.org/doc/stable/reference/generated/numpy.concatenate.html#numpy.concatenate 13/01/2022 06:32 NumPy: the absolute basics for beginners — NumPy v1.22 Manual https://numpy.org/doc/stable/user/absolute_beginners.html 6/29 ndarray.shapeexibirá uma tupla de inteiros que indicam o número de elementos armazenados ao longo de cada dimensão do array. Se, por exemplo, você tiver um array 2-D com 2 linhas e 3 colunas, a forma do seu array será .(2, 3) Por exemplo, se você criar esta matriz: >>> array_example = np.array([[[0, 1, 2, 3], ... [4, 5, 6, 7]], ... ... [[0, 1, 2, 3], ... [4, 5, 6, 7]], ... ... [[0 ,1 ,2, 3], ... [4, 5, 6, 7]]]) Para encontrar o número de dimensões da matriz, execute: >>> array_example.ndim 3 Para encontrar o número total de elementos na matriz, execute: >>> array_example.size 24 E para encontrar a forma do seu array, execute: >>> array_example.shape (3, 2, 4) Você pode remodelar uma matriz? Esta seção abrangeEsta seção abrange arr.reshape() Sim! Usar arr.reshape()dará uma nova forma a um array sem alterar os dados. Apenas lembre-se que quando você usa o método reshape, o array que você quer produzir precisa ter o mesmo número de elementos que o array original. Se você começar com um array com 12 elementos, precisará certi�car- se de que seu novo array também tenha um total de 12 elementos. Se você começar com esta matriz: >>> a = np.arange(6) >>> print(a) [0 1 2 3 4 5] Você pode usar reshape()para remodelar sua matriz. Por exemplo, você pode remodelar essa matriz para uma matriz com três linhas e duas colunas: >>> b = a.reshape(3, 2) >>> print(b) [[0 1] [2 3] [4 5]] Com np.reshape, você pode especi�car alguns parâmetros opcionais: >>> np.reshape(a, newshape=(1, 6), order='C') array([[0, 1, 2, 3, 4, 5]]) 13/01/2022 06:32 NumPy: the absolute basics for beginners — NumPy v1.22 Manual https://numpy.org/doc/stable/user/absolute_beginners.html 7/29 a é a matriz a ser remodelada. newshapeé a nova forma que você deseja.Você pode especi�car um inteiro ou uma tupla de inteiros. Se você especi�car um número inteiro, o resultado será uma matriz desse tamanho. A forma deve ser compatível com a forma original. order: Csigni�ca ler/escrever os elementos usando ordem de índice semelhante a C, Fsigni�ca ler/escrever os elementos usando ordem de índice semelhante a Fortran, A signi�ca ler/escrever os elementos em ordem de índice semelhante a Fortran se a for Fortran contíguo na memória, C -como ordem caso contrário. (Este é um parâmetro opcional e não precisa ser especi�cado.) Se você quiser saber mais sobre a ordem C e Fortran, você pode ler mais sobre a organização interna dos arrays NumPy aqui . Essencialmente, as ordens C e Fortran têm a ver com a forma como os índices correspondem à ordem em que o array é armazenado na memória. Em Fortran, ao mover-se pelos elementos de uma matriz bidimensional conforme ela é armazenada na memória, o primeiro índice é o índice que varia mais rapidamente. À medida que o primeiro índice se move para a próxima linha à medida que muda, a matriz é armazenada uma coluna de cada vez. É por isso que o Fortran é considerado uma linguagem de coluna principal . Em C, por outro lado, o último índice muda mais rapidamente. A matriz é armazenada por linhas, tornando-se uma linguagem de linha principal. O que você faz para C ou Fortran depende se é mais importante preservar a convenção de indexação ou não reordenar os dados. Saiba mais sobre manipulação de formas aqui . Como converter um array 1D em um array 2D (como adicionar um novo eixo a um array) Esta seção abrange np.newaxis ,np.expand_dims Você pode usar np.newaxise np.expand_dimspara aumentar as dimensões de sua matriz existente. O uso np.newaxisaumentará as dimensões do seu array em uma dimensão quando usado uma vez. Isso signi�ca que uma matriz 1D se tornará uma matriz 2D , uma matriz 2D se tornará uma matriz 3D e assim por diante. Por exemplo, se você começar com esta matriz: >>> a = np.array([1, 2, 3, 4, 5, 6]) >>> a.shape (6,) Você pode usar np.newaxispara adicionar um novo eixo: >>> a2 = a[np.newaxis, :] >>> a2.shape (1, 6) Você pode converter explicitamente uma matriz 1D com um vetor de linha ou um vetor de coluna usando np.newaxis. Por exemplo, você pode converter uma matriz 1D em um vetor de linha inserindo um eixo ao longo da primeira dimensão: >>> row_vector = a[np.newaxis, :] >>> row_vector.shape (1, 6) Ou, para um vetor de coluna, você pode inserir um eixo ao longo da segunda dimensão: >>> col_vector = a[:, np.newaxis] >>> col_vector.shape (6, 1) https://numpy.org/doc/stable/dev/internals.html#numpy-internals https://numpy.org/doc/stable/user/quickstart.html#quickstart-shape-manipulation 13/01/2022 06:32 NumPy: the absolute basics for beginners — NumPy v1.22 Manual https://numpy.org/doc/stable/user/absolute_beginners.html 8/29 Você também pode expandir uma matriz inserindo um novo eixo em uma posição especi�cada com np.expand_dims. Por exemplo, se você começar com esta matriz: >>> a = np.array([1, 2, 3, 4, 5, 6]) >>> a.shape (6,) Você pode usar np.expand_dimspara adicionar um eixo na posição de índice 1 com: >>> b = np.expand_dims(a, axis=1) >>> b.shape (6, 1) Você pode adicionar um eixo na posição de índice 0 com: >>> c = np.expand_dims(a, axis=0) >>> c.shape (1, 6) Encontre mais informações sobre newaxis aqui e expand_dimsem expand_dims. Indexação e fatiamento Você pode indexar e fatiar arrays NumPy da mesma forma que pode fatiar listas Python. >>> data = np.array([1, 2, 3]) >>> data[1] 2 >>> data[0:2] array([1, 2]) >>> data[1:] array([2, 3]) >>> data[-2:] array([2, 3]) Você pode visualizar assim: Você pode querer pegar uma seção de sua matriz ou elementos especí�cos da matriz para usar em análises posteriores ou operações adicionais. Para fazer isso, você precisará dividir, dividir e/ou indexar seus arrays. Se você deseja selecionar valores de sua matriz que atendam a determinadas condições, é simples com NumPy. Por exemplo, se você começar com esta matriz: >>> a = np.array([[1 , 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]) Você pode imprimir facilmente todos os valores na matriz que são menores que 5. https://numpy.org/doc/stable/reference/arrays.indexing.html#arrays-indexing https://numpy.org/doc/stable/reference/generated/numpy.expand_dims.html#numpy.expand_dims 13/01/2022 06:32 NumPy: the absolute basics for beginners — NumPy v1.22 Manual https://numpy.org/doc/stable/user/absolute_beginners.html 9/29 >>> print(a[a < 5]) [1 2 3 4] Você também pode selecionar, por exemplo, números iguais ou maiores que 5 e usar essa condição para indexar uma matriz. >>> five_up = (a >= 5) >>> print(a[five_up]) [ 5 6 7 8 9 10 11 12] Você pode selecionar elementos que são divisíveis por 2: >>> divisible_by_2 = a[a%2==0] >>> print(divisible_by_2) [ 2 4 6 8 10 12] Ou você pode selecionar elementos que satisfaçam duas condições usando os operadores &e |: >>> c = a[(a > 2) & (a < 11)] >>> print(c) [ 3 4 5 6 7 8 9 10] Você também pode usar os operadores lógicos & e | para retornar valores booleanos que especi�cam se os valores em uma matriz atendem ou não a uma determinada condição. Isso pode ser útil com matrizes que contêm nomes ou outros valores categóricos. >>> five_up = (a > 5) | (a == 5) >>> print(five_up) [[False False False False] [ True True True True] [ True True True True]] Você também pode usar np.nonzero()para selecionar elementos ou índices de uma matriz. Começando com esta matriz: >>> a = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]) Você pode usar np.nonzero()para imprimir os índices de elementos que são, por exemplo, menores que 5: >>> b = np.nonzero(a < 5) >>> print(b) (array([0, 0, 0, 0]), array([0, 1, 2, 3])) Neste exemplo, uma tupla de matrizes foi retornada: uma para cada dimensão. A primeira matriz representa os índices de linha onde esses valores são encontrados e a segunda matriz representa os índices de coluna onde os valores são encontrados. Se você quiser gerar uma lista de coordenadas onde os elementos existem, você pode compactar as matrizes, iterar sobre a lista de coordenadas e imprimi-las. Por exemplo: >>> list_of_coordinates= list(zip(b[0], b[1])) >>> for coord in list_of_coordinates: ... print(coord) (0, 0) (0, 1) (0, 2) (0, 3) 13/01/2022 06:32 NumPy: the absolute basics for beginners — NumPy v1.22 Manual https://numpy.org/doc/stable/user/absolute_beginners.html 10/29 Você também pode usar np.nonzero()para imprimir os elementos em uma matriz que são menores que 5 com: >>> print(a[b]) [1 2 3 4] Se o elemento que você está procurando não existir no array, o array de índices retornado estará vazio. Por exemplo: >>> not_there = np.nonzero(a == 42) >>> print(not_there) (array([], dtype=int64), array([], dtype=int64)) Saiba mais sobre indexação e fatiamento aqui e aqui . Leia mais sobre como usar a função diferente de zero em: nonzero. Como criar um array a partir de dados existentes Esta seção abrange , , , , ,slicing and indexingnp.vstack()np.hstack()np.hsplit().view()copy() Você pode criar facilmente uma nova matriz a partir de uma seção de uma matriz existente. Digamos que você tenha este array: >>> a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) Você pode criar uma nova matriz de uma seção de sua matriz a qualquer momento, especi�cando onde deseja fatiar sua matriz. >>> arr1 = a[3:8] >>> arr1 array([4, 5, 6, 7, 8]) Aqui, você pegou uma seção do seu array da posição de índice 3 até a posição de índice 8. Você também pode empilhar dois arrays existentes, tanto vertical quanto horizontalmente. Digamos que você tenha dois arrays a1e a2: >>> a1 = np.array([[1, 1], ... [2, 2]]) >>> a2 = np.array([[3, 3], ... [4, 4]]) Você pode empilhá-los verticalmente com vstack: >>> np.vstack((a1, a2)) array([[1, 1], [2, 2], [3, 3], [4, 4]])Ou empilhe-os horizontalmente com hstack: >>> np.hstack((a1, a2)) array([[1, 1, 3, 3], [2, 2, 4, 4]]) https://numpy.org/doc/stable/user/quickstart.html#quickstart-indexing-slicing-and-iterating https://numpy.org/doc/stable/user/basics.indexing.html#basics-indexing https://numpy.org/doc/stable/reference/generated/numpy.nonzero.html#numpy.nonzero 13/01/2022 06:32 NumPy: the absolute basics for beginners — NumPy v1.22 Manual https://numpy.org/doc/stable/user/absolute_beginners.html 11/29 Você pode dividir um array em vários arrays menores usando hsplit. Você pode especi�car o número de matrizes de formato igual a serem retornadas ou as colunas após as quais a divisão deve ocorrer. Digamos que você tenha este array: >>> x = np.arange(1, 25).reshape(2, 12) >>> x array([[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], [13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]]) Se você quisesse dividir essa matriz em três matrizes de formato igual, você executaria: >>> np.hsplit(x, 3) [array([[1, 2, 3, 4], [13, 14, 15, 16]]), array([[ 5, 6, 7, 8], [17, 18, 19, 20]]), array([[ 9, 10, 11, 12], [21, 22, 23, 24]])] Se você quisesse dividir sua matriz após a terceira e quarta coluna, você executaria: >>> np.hsplit(x, (3, 4)) [array([[1, 2, 3], [13, 14, 15]]), array([[ 4], [16]]), array([[ 5, 6, 7, 8, 9, 10, 11, 12], [17, 18, 19, 20, 21, 22, 23, 24]])] Saiba mais sobre empilhamento e divisão de arrays aqui . Você pode usar o viewmétodo para criar um novo objeto de matriz que analisa os mesmos dados que a matriz original (uma cópia super�cial ). As visualizações são um conceito importante do NumPy! As funções NumPy, bem como operações como indexação e fatiamento, retornarão visualizações sempre que possível. Isso economiza memória e é mais rápido (nenhuma cópia dos dados precisa ser feita). No entanto, é importante estar ciente disso - modi�car dados em uma exibição também modi�ca o array original! Digamos que você crie este array: >>> a = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]) Agora criamos um array b1fatiando ae modi�cando o primeiro elemento de b1. Isso também modi�cará o elemento correspondente a! >>> b1 = a[0, :] >>> b1 array([1, 2, 3, 4]) >>> b1[0] = 99 >>> b1 array([99, 2, 3, 4]) >>> a array([[99, 2, 3, 4], [ 5, 6, 7, 8], [ 9, 10, 11, 12]]) O uso do copymétodo fará uma cópia completa do array e seus dados (uma cópia profunda ). Para usar isso em seu array, você pode executar: >>> b2 = a.copy() Saiba mais sobre cópias e visualizações aqui . https://numpy.org/doc/stable/user/quickstart.html#quickstart-stacking-arrays https://numpy.org/doc/stable/user/quickstart.html#quickstart-copies-and-views 13/01/2022 06:32 NumPy: the absolute basics for beginners — NumPy v1.22 Manual https://numpy.org/doc/stable/user/absolute_beginners.html 12/29 Operações básicas de array Esta seção abrange adição, subtração, multiplicação, divisão e muito mais Depois de criar seus arrays, você pode começar a trabalhar com eles. Digamos, por exemplo, que você criou dois arrays, um chamado "dados" e outro chamado "uns" Você pode adicionar as matrizes junto com o sinal de mais. >>> data = np.array([1, 2]) >>> ones = np.ones(2, dtype=int) >>> data + ones array([2, 3]) Você pode, é claro, fazer mais do que apenas adição! >>> data - ones array([0, 1]) >>> data * data array([1, 4]) >>> data / data array([1., 1.]) As operações básicas são simples com o NumPy. Se você quiser encontrar a soma dos elementos em uma matriz, use sum(). Isso funciona para matrizes 1D, matrizes 2D e matrizes em dimensões mais altas. >>> a = np.array([1, 2, 3, 4]) >>> a.sum() 10 Para adicionar as linhas ou colunas em uma matriz 2D, você deve especi�car o eixo. Se você começar com esta matriz: >>> b = np.array([[1, 1], [2, 2]]) Você pode somar no eixo das linhas com: 13/01/2022 06:32 NumPy: the absolute basics for beginners — NumPy v1.22 Manual https://numpy.org/doc/stable/user/absolute_beginners.html 13/29 >>> b.sum(axis=0) array([3, 3]) Você pode somar no eixo das colunas com: >>> b.sum(axis=1) array([2, 4]) Saiba mais sobre as operações básicas aqui . Transmissão Há momentos em que você pode querer realizar uma operação entre um array e um único número (também chamado de operação entre um vetor e um escalar ) ou entre arrays de dois tamanhos diferentes. Por exemplo, sua matriz (chamaremos de “dados”) pode conter informações sobre distância em milhas, mas você deseja converter as informações em quilômetros. Você pode realizar esta operação com: >>> data = np.array([1.0, 2.0]) >>> data * 1.6 array([1.6, 3.2]) O NumPy entende que a multiplicação deve acontecer com cada célula. Esse conceito é chamado de radiodifusão . Broadcasting é um mecanismo que permite ao NumPy realizar operações em arrays de diferentes formas. As dimensões do seu array devem ser compatíveis, por exemplo, quando as dimensões de ambos os arrays forem iguais ou quando um deles for 1. Se as dimensões não forem compatíveis, você obterá um ValueError. Saiba mais sobre a transmissão aqui . Operações de array mais úteis Esta seção abrange máximo, mínimo, soma, média, produto, desvio padrão e muito mais O NumPy também executa funções de agregação. Além de min, max, e sum, você pode executar facilmente meanpara obter a média, prodobter o resultado da multiplicação dos elementos, stdobter o desvio padrão e muito mais. >>> data.max() 2.0 >>> data.min() 1.0 >>> data.sum() 3.0 https://numpy.org/doc/stable/user/quickstart.html#quickstart-basic-operations https://numpy.org/doc/stable/user/basics.broadcasting.html#basics-broadcasting 13/01/2022 06:32 NumPy: the absolute basics for beginners — NumPy v1.22 Manual https://numpy.org/doc/stable/user/absolute_beginners.html 14/29 Vamos começar com este array, chamado “a” >>> a = np.array([[0.45053314, 0.17296777, 0.34376245, 0.5510652], ... [0.54627315, 0.05093587, 0.40067661, 0.55645993], ... [0.12697628, 0.82485143, 0.26590556, 0.56917101]]) É muito comum querer agregar ao longo de uma linha ou coluna. Por padrão, cada função de agregação NumPy retornará a agregação de todo o array. Para encontrar a soma ou o mínimo dos elementos em sua matriz, execute: >>> a.sum() 4.8595784 Ou: >>> a.min() 0.05093587 Você pode especi�car em qual eixo deseja que a função de agregação seja calculada. Por exemplo, você pode encontrar o valor mínimo em cada coluna especi�cando axis=0. >>> a.min(axis=0) array([0.12697628, 0.05093587, 0.26590556, 0.5510652 ]) Os quatro valores listados acima correspondem ao número de colunas em sua matriz. Com uma matriz de quatro colunas, você obterá quatro valores como resultado. Leia mais sobre métodos de array aqui . Criando matrizes Você pode passar listas de listas do Python para criar uma matriz 2-D (ou “matriz”) para representá-las no NumPy. >>> data = np.array([[1, 2], [3, 4], [5, 6]]) >>> data array([[1, 2], [3, 4], [5, 6]]) As operações de indexação e fatiamento são úteis ao manipular matrizes: >>> data[0, 1] 2 >>> data[1:3] array([[3, 4], [5, 6]]) >>> data[0:2, 0] array([1, 3]) https://numpy.org/doc/stable/reference/arrays.ndarray.html#array-ndarray-methods 13/01/2022 06:32 NumPy: the absolute basics for beginners — NumPy v1.22 Manual https://numpy.org/doc/stable/user/absolute_beginners.html 15/29 Você pode agregar matrizes da mesma forma que agregou vetores: >>> data.max() 6 >>> data.min() 1 >>> data.sum() 21 Você pode agregar todos os valores em uma matriz e agregá-los em colunas ou linhas usando o axisparâmetro. Para ilustrar esse ponto, vejamos um conjunto de dados ligeiramente modi�cado: >>> data = np.array([[1, 2], [5, 3], [4, 6]]) >>> data array([[1, 2], [5, 3], [4, 6]]) >>> data.max(axis=0) array([5, 6]) >>> data.max(axis=1) array([2, 5, 6]) Depois de criarsuas matrizes, você pode somá-las e multiplicá-las usando operadores aritméticos se tiver duas matrizes do mesmo tamanho. >>> data = np.array([[1, 2], [3, 4]]) >>> ones = np.array([[1, 1], [1, 1]]) >>> data + ones array([[2, 3], [4, 5]]) 13/01/2022 06:32 NumPy: the absolute basics for beginners — NumPy v1.22 Manual https://numpy.org/doc/stable/user/absolute_beginners.html 16/29 Você pode fazer essas operações aritméticas em matrizes de tamanhos diferentes, mas somente se uma matriz tiver apenas uma coluna ou uma linha. Nesse caso, o NumPy usará suas regras de transmissão para a operação. >>> data = np.array([[1, 2], [3, 4], [5, 6]]) >>> ones_row = np.array([[1, 1]]) >>> data + ones_row array([[2, 3], [4, 5], [6, 7]]) Esteja ciente de que quando o NumPy imprime matrizes N-dimensionais, o último eixo é colocado em loop sobre o mais rápido, enquanto o primeiro eixo é o mais lento. Por exemplo: >>> np.ones((4, 3, 2)) array([[[1., 1.], [1., 1.], [1., 1.]], [[1., 1.], [1., 1.], [1., 1.]], [[1., 1.], [1., 1.], [1., 1.]], [[1., 1.], [1., 1.], [1., 1.]]]) Muitas vezes, queremos que o NumPy inicialize os valores de uma matriz. NumPy oferece funções como ones()e zeros(), e a random.Generatorclasse para geração de números aleatórios para isso. Tudo o que você precisa fazer é passar o número de elementos que deseja gerar: >>> np.ones(3) array([1., 1., 1.]) >>> np.zeros(3) array([0., 0., 0.]) # the simplest way to generate random numbers >>> rng = np.random.default_rng(0) >>> rng.random(3) array([0.63696169, 0.26978671, 0.04097352]) 13/01/2022 06:32 NumPy: the absolute basics for beginners — NumPy v1.22 Manual https://numpy.org/doc/stable/user/absolute_beginners.html 17/29 Você também pode usar ones(), zeros(), e random()para criar uma matriz 2D se fornecer uma tupla descrevendo as dimensões da matriz: >>> np.ones((3, 2)) array([[1., 1.], [1., 1.], [1., 1.]]) >>> np.zeros((3, 2)) array([[0., 0.], [0., 0.], [0., 0.]]) >>> rng.random((3, 2)) array([[0.01652764, 0.81327024], [0.91275558, 0.60663578], [0.72949656, 0.54362499]]) # may vary Leia mais sobre como criar arrays, preenchidos com 0's, 1's, outros valores ou não inicializados, em rotinas de criação de arrays . Gerando números aleatórios O uso da geração de números aleatórios é uma parte importante da con�guração e avaliação de muitos algoritmos numéricos e de aprendizado de máquina. Se você precisa inicializar pesos aleatoriamente em uma rede neural arti�cial, dividir dados em conjuntos aleatórios ou embaralhar aleatoriamente seu conjunto de dados, ser capaz de gerar números aleatórios (na verdade, números pseudo-aleatórios repetíveis) é essencial. Com Generator.integers, você pode gerar números inteiros aleatórios de baixo (lembre-se de que isso é inclusivo com NumPy) a alto (exclusivo). Você pode de�nir endpoint=Truepara tornar o número alto inclusivo. Você pode gerar uma matriz 2 x 4 de inteiros aleatórios entre 0 e 4 com: >>> rng.integers(5, size=(2, 4)) array([[2, 1, 1, 0], [0, 0, 0, 4]]) # may vary Leia mais sobre geração de números aleatórios aqui . Como obter itens e contagens únicas https://numpy.org/doc/stable/reference/routines.array-creation.html#routines-array-creation https://numpy.org/doc/stable/reference/random/index.html#numpyrandom 13/01/2022 06:32 NumPy: the absolute basics for beginners — NumPy v1.22 Manual https://numpy.org/doc/stable/user/absolute_beginners.html 18/29 Esta seção abrange np.unique() Você pode encontrar os elementos exclusivos em uma matriz facilmente com np.unique. Por exemplo, se você começar com esta matriz: >>> a = np.array([11, 11, 12, 13, 14, 15, 16, 17, 12, 13, 11, 14, 18, 19, 20]) você pode usar np.uniquepara imprimir os valores exclusivos em sua matriz: >>> unique_values = np.unique(a) >>> print(unique_values) [11 12 13 14 15 16 17 18 19 20] Para obter os índices de valores únicos em um array NumPy (um array das primeiras posições de índice de valores únicos no array), apenas passe o return_index argumento np.unique()assim como seu array. >>> unique_values, indices_list = np.unique(a, return_index=True) >>> print(indices_list) [ 0 2 3 4 5 6 7 12 13 14] Você pode passar o return_countsargumento np.unique()junto com sua matriz para obter a contagem de frequência de valores exclusivos em uma matriz NumPy. >>> unique_values, occurrence_count = np.unique(a, return_counts=True) >>> print(occurrence_count) [3 2 2 2 1 1 1 1 1 1] Isso também funciona com matrizes 2D! Se você começar com esta matriz: >>> a_2d = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [1, 2, 3, 4]]) Você pode encontrar valores exclusivos com: >>> unique_values = np.unique(a_2d) >>> print(unique_values) [ 1 2 3 4 5 6 7 8 9 10 11 12] Se o argumento do eixo não for passado, sua matriz 2D será achatada. Se você deseja obter as linhas ou colunas exclusivas, certi�que-se de passar o axis argumento. Para localizar as linhas exclusivas, especi�que axis=0e para colunas, especi�que axis=1. >>> unique_rows = np.unique(a_2d, axis=0) >>> print(unique_rows) [[ 1 2 3 4] [ 5 6 7 8] [ 9 10 11 12]] Para obter as linhas exclusivas, a posição do índice e a contagem de ocorrências, você pode usar: 13/01/2022 06:32 NumPy: the absolute basics for beginners — NumPy v1.22 Manual https://numpy.org/doc/stable/user/absolute_beginners.html 19/29 >>> unique_rows, indices, occurrence_count = np.unique( ... a_2d, axis=0, return_counts=True, return_index=True) >>> print(unique_rows) [[ 1 2 3 4] [ 5 6 7 8] [ 9 10 11 12]] >>> print(indices) [0 1 2] >>> print(occurrence_count) [2 1 1] Para saber mais sobre como localizar os elementos exclusivos em uma matriz, consulte unique. Transpondo e remodelando uma matriz Esta seção abrange arr.reshape() , arr.transpose(),arr.T É comum precisar transpor suas matrizes. As matrizes NumPy têm a propriedade Tque permite transpor uma matriz. Você também pode precisar alternar as dimensões de uma matriz. Isso pode acontecer quando, por exemplo, você tem um modelo que espera uma determinada forma de entrada diferente do seu conjunto de dados. É aqui que o reshapemétodo pode ser útil. Você simplesmente precisa passar as novas dimensões que deseja para a matriz. >>> data.reshape(2, 3) array([[1, 2, 3], [4, 5, 6]]) >>> data.reshape(3, 2) array([[1, 2], [3, 4], [5, 6]]) Você também pode usar .transpose()para reverter ou alterar os eixos de uma matriz de acordo com os valores especi�cados. Se você começar com esta matriz: >>> arr = np.arange(6).reshape((2, 3)) >>> arr array([[0, 1, 2], [3, 4, 5]]) https://numpy.org/doc/stable/reference/generated/numpy.unique.html#numpy.unique 13/01/2022 06:32 NumPy: the absolute basics for beginners — NumPy v1.22 Manual https://numpy.org/doc/stable/user/absolute_beginners.html 20/29 Você pode transpor sua matriz com arr.transpose(). >>> arr.transpose() array([[0, 3], [1, 4], [2, 5]]) Você também pode usar arr.T: >>> arr.T array([[0, 3], [1, 4], [2, 5]]) Para saber mais sobre como transpor e remodelar matrizes, consulte transposee reshape. Como reverter um array Esta seção abrange np.flip() A np.flip()função do NumPy permite inverter, ou reverter, o conteúdo de uma matriz ao longo de um eixo. Ao usar np.flip(), especi�que a matriz que deseja reverter e o eixo. Se você não especi�car o eixo, o NumPy reverterá o conteúdo ao longo de todos os eixos de sua matriz de entrada. Revertendo uma matriz 1D Se você começar com uma matriz 1D como esta: >>> arr = np.array([1, 2, 3, 4, 5, 6, 7, 8]) Você pode reverter com: >>> reversed_arr = np.flip(arr) Se você quiser imprimir seu array invertido, você pode executar: >>> print('Reversed Array: ', reversed_arr) ReversedArray: [8 7 6 5 4 3 2 1] Revertendo uma matriz 2D Uma matriz 2D funciona da mesma maneira. Se você começar com esta matriz: >>> arr_2d = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]) Você pode reverter o conteúdo em todas as linhas e colunas com: >>> reversed_arr = np.flip(arr_2d) >>> print(reversed_arr) [[12 11 10 9] [ 8 7 6 5] [ 4 3 2 1]] Você pode reverter facilmente apenas as linhas com: https://numpy.org/doc/stable/reference/generated/numpy.transpose.html#numpy.transpose https://numpy.org/doc/stable/reference/generated/numpy.reshape.html#numpy.reshape 13/01/2022 06:32 NumPy: the absolute basics for beginners — NumPy v1.22 Manual https://numpy.org/doc/stable/user/absolute_beginners.html 21/29 >>> reversed_arr_rows = np.flip(arr_2d, axis=0) >>> print(reversed_arr_rows) [[ 9 10 11 12] [ 5 6 7 8] [ 1 2 3 4]] Ou inverta apenas as colunas com: >>> reversed_arr_columns = np.flip(arr_2d, axis=1) >>> print(reversed_arr_columns) [[ 4 3 2 1] [ 8 7 6 5] [12 11 10 9]] Você também pode reverter o conteúdo de apenas uma coluna ou linha. Por exemplo, você pode reverter o conteúdo da linha na posição de índice 1 (a segunda linha): >>> arr_2d[1] = np.flip(arr_2d[1]) >>> print(arr_2d) [[ 1 2 3 4] [ 8 7 6 5] [ 9 10 11 12]] Você também pode reverter a coluna na posição de índice 1 (a segunda coluna): >>> arr_2d[:,1] = np.flip(arr_2d[:,1]) >>> print(arr_2d) [[ 1 10 3 4] [ 8 7 6 5] [ 9 2 11 12]] Leia mais sobre inverter arrays em flip. Remodelando e achatando arrays multidimensionais Esta seção abrange .flatten() ,ravel() Existem duas maneiras populares de achatar uma matriz: .flatten()e .ravel(). A principal diferença entre os dois é que o novo array criado usando ravel()é na verdade uma referência ao array pai (ou seja, uma “view”). Isso signi�ca que qualquer alteração no novo array afetará o array pai também. Como ravelnão cria uma cópia, é e�ciente em termos de memória. Se você começar com esta matriz: >>> x = np.array([[1 , 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]) Você pode usar flattenpara achatar sua matriz em uma matriz 1D. >>> x.flatten() array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]) Quando você usa flatten, as alterações em seu novo array não alteram o array pai. Por exemplo: https://numpy.org/doc/stable/reference/generated/numpy.flip.html#numpy.flip 13/01/2022 06:32 NumPy: the absolute basics for beginners — NumPy v1.22 Manual https://numpy.org/doc/stable/user/absolute_beginners.html 22/29 >>> a1 = x.flatten() >>> a1[0] = 99 >>> print(x) # Original array [[ 1 2 3 4] [ 5 6 7 8] [ 9 10 11 12]] >>> print(a1) # New array [99 2 3 4 5 6 7 8 9 10 11 12] Mas quando você usa ravel, as alterações feitas no novo array afetarão o array pai. Por exemplo: >>> a2 = x.ravel() >>> a2[0] = 98 >>> print(x) # Original array [[98 2 3 4] [ 5 6 7 8] [ 9 10 11 12]] >>> print(a2) # New array [98 2 3 4 5 6 7 8 9 10 11 12] Leia mais sobre flattenem ndarray.flattene ravelem ravel. Como acessar a docstring para mais informações Esta seção abrange help() , ?,?? Quando se trata do ecossistema de ciência de dados, Python e NumPy são criados com o usuário em mente. Um dos melhores exemplos disso é o acesso integrado à documentação. Cada objeto contém a referência a uma string, que é conhecida como docstring . Na maioria dos casos, esta docstring contém um resumo rápido e conciso do objeto e como usá-lo. O Python tem uma help() função integrada que pode ajudá-lo a acessar essas informações. Isso signi�ca que quase sempre que você precisar de mais informações, poderá usá help()-las para localizar rapidamente as informações de que precisa. Por exemplo: >>> help(max) Help on built-in function max in module builtins: max(...) max(iterable, *[, default=obj, key=func]) -> value max(arg1, arg2, *args, *[, key=func]) -> value With a single iterable argument, return its biggest item. The default keyword-only argument specifies an object to return if the provided iterable is empty. With two or more arguments, return the largest argument. Como o acesso a informações adicionais é muito útil, o IPython usa o ? caractere como um atalho para acessar esta documentação junto com outras informações relevantes. O IPython é um shell de comando para computação interativa em vários idiomas. Você pode encontrar mais informações sobre o IPython aqui . Por exemplo: https://numpy.org/doc/stable/reference/generated/numpy.ndarray.flatten.html#numpy.ndarray.flatten https://numpy.org/doc/stable/reference/generated/numpy.ravel.html#numpy.ravel https://ipython.org/ 13/01/2022 06:32 NumPy: the absolute basics for beginners — NumPy v1.22 Manual https://numpy.org/doc/stable/user/absolute_beginners.html 23/29 In [0]: max? max(iterable, *[, default=obj, key=func]) -> value max(arg1, arg2, *args, *[, key=func]) -> value With a single iterable argument, return its biggest item. The default keyword-only argument specifies an object to return if the provided iterable is empty. With two or more arguments, return the largest argument. Type: builtin_function_or_method Você pode até usar essa notação para métodos de objetos e os próprios objetos. Digamos que você crie este array: >>> a = np.array([1, 2, 3, 4, 5, 6]) Então você pode obter muitas informações úteis (primeiros detalhes sobre asi mesmo, seguidos pela docstring ndarrayde que aé uma instância): In [1]: a? Type: ndarray String form: [1 2 3 4 5 6] Length: 6 File: ~/anaconda3/lib/python3.7/site-packages/numpy/__init__.py Docstring: <no docstring> Class docstring: ndarray(shape, dtype=float, buffer=None, offset=0, strides=None, order=None) An array object represents a multidimensional, homogeneous array of fixed-size items. An associated data-type object describes the format of each element in the array (its byte-order, how many bytes it occupies in memory, whether it is an integer, a floating point number, or something else, etc.) Arrays should be constructed using `array`, `zeros` or `empty` (refer to the See Also section below). The parameters given here refer to a low-level method (`ndarray(...)`) for instantiating an array. For more information, refer to the `numpy` module and examine the methods and attributes of an array. Parameters ---------- (for the __new__ method; see Notes below) shape : tuple of ints Shape of created array. ... Isso também funciona para funções e outros objetos que você cria. Apenas lembre-se de incluir uma docstring com sua função usando uma string literal ( ou em torno de sua documentação).""" """''' ''' Por exemplo, se você criar esta função: >>> def double(a): ... '''Return a * 2''' ... return a * 2 Você pode obter informações sobre a função: 13/01/2022 06:32 NumPy: the absolute basics for beginners — NumPy v1.22 Manual https://numpy.org/doc/stable/user/absolute_beginners.html 24/29 In [2]: double? Signature: double(a) Docstring: Return a * 2 File: ~/Desktop/<ipython-input-23-b5adf20be596> Type: function Você pode alcançar outro nível de informação lendo o código-fonte do objeto em que está interessado. O uso de um ponto de interrogação duplo ( ??) permite acessar o código-fonte. Por exemplo: In [3]: double?? Signature: double(a) Source: def double(a): '''Return a * 2''' return a * 2 File: ~/Desktop/<ipython-input-23-b5adf20be596> Type: function Se o objeto em questão for compilado em uma linguagem diferente do Python, using ??retornará as mesmas informações que ?. Você encontrará isso com muitos objetos e tipos internos, por exemplo: In [4]: len? Signature: len(obj, /) Docstring: Return the number of items in a container. Type: builtin_function_or_method e : In [5]: len?? Signature: len(obj, /) Docstring: Return the number of itemsin a container. Type: builtin_function_or_method têm a mesma saída porque foram compilados em uma linguagem de programação diferente do Python. Trabalhando com fórmulas matemáticas A facilidade de implementação de fórmulas matemáticas que funcionam em arrays é uma das coisas que tornam o NumPy tão amplamente utilizado na comunidade cientí�ca Python. Por exemplo, esta é a fórmula do erro quadrático médio (uma fórmula central usada em modelos de aprendizado de máquina supervisionados que lidam com regressão): Implementar esta fórmula é simples e direto no NumPy: 13/01/2022 06:32 NumPy: the absolute basics for beginners — NumPy v1.22 Manual https://numpy.org/doc/stable/user/absolute_beginners.html 25/29 O que faz isso funcionar tão bem é que predictionse labelspode conter um ou mil valores. Eles só precisam ser do mesmo tamanho. Você pode visualizar assim: Neste exemplo, os vetores de previsões e rótulos contêm três valores, o que signi�ca que ntem um valor de três. Depois de realizarmos as subtrações, os valores no vetor são elevados ao quadrado. Em seguida, o NumPy soma os valores e seu resultado é o valor do erro para essa previsão e uma pontuação para a qualidade do modelo. Como salvar e carregar objetos NumPy Esta seção abrange np.save , np.savez, np.savetxt, np.load,np.loadtxt Em algum momento, você desejará salvar seus arrays em disco e carregá-los de volta sem precisar executar novamente o código. Felizmente, existem várias maneiras de salvar e carregar objetos com o NumPy. Os objetos ndarray podem ser salvos e carregados a partir dos arquivos de disco loadtxte savetxtfunções que lidam com arquivos de texto normais loade savefunções que lidam com arquivos binários NumPy com uma extensão de arquivo .npy e uma savezfunção que lida com arquivos NumPy com uma extensão de arquivo .npz . Os .npy e .npz arquivos armazenar dados, forma, dtipo, e outras informações necessárias para reconstruir o ndarray de uma forma que permite que a matriz ser corretamente recuperado, mesmo quando o arquivo estiver em outra máquina com arquitetura diferente. Se você deseja armazenar um único objeto ndarray, armazene-o como um arquivo .npy usando np.save. Se você quiser armazenar mais de um objeto ndarray em um único arquivo, salve-o como um arquivo .npz usando np.savez. Você também pode salvar vários arrays em um único arquivo no formato npz compactado com extensão savez_compressed. É fácil salvar e carregar e array com arquivos np.save(). Apenas certi�que-se de especi�car a matriz que deseja salvar e um nome de arquivo. Por exemplo, se você criar esta matriz: >>> a = np.array([1, 2, 3, 4, 5, 6]) Você pode salvá-lo como “�lename.npy” com: >>> np.save('filename', a) Você pode usar np.load()para reconstruir sua matriz. >>> b = np.load('filename.npy') https://numpy.org/doc/stable/reference/generated/numpy.savez_compressed.html#numpy.savez_compressed 13/01/2022 06:32 NumPy: the absolute basics for beginners — NumPy v1.22 Manual https://numpy.org/doc/stable/user/absolute_beginners.html 26/29 Se você quiser veri�car sua matriz, você pode executar:: >>> print(b) [1 2 3 4 5 6] Você pode salvar um array NumPy como um arquivo de texto simples como um arquivo .csv ou .txt com np.savetxt. Por exemplo, se você criar esta matriz: >>> csv_arr = np.array([1, 2, 3, 4, 5, 6, 7, 8]) Você pode salvá-lo facilmente como um arquivo .csv com o nome “new_�le.csv” assim: >>> np.savetxt('new_file.csv', csv_arr) Você pode carregar rápida e facilmente seu arquivo de texto salvo usando loadtxt(): >>> np.loadtxt('new_file.csv') array([1., 2., 3., 4., 5., 6., 7., 8.]) As funções savetxt()e loadtxt()aceitam parâmetros opcionais adicionais, como cabeçalho, rodapé e delimitador. Embora os arquivos de texto possam ser mais fáceis de compartilhar, os arquivos .npy e .npz são menores e mais rápidos de ler. Se você precisar de um tratamento mais so�sticado do seu arquivo de texto (por exemplo, se precisar trabalhar com linhas que contenham valores ausentes), convém usar a genfromtxt função. Com savetxt, você pode especi�car cabeçalhos, rodapés, comentários e muito mais. Saiba mais sobre rotinas de entrada e saída aqui . Importando e exportando um CSV É simples de ler em um CSV que contém informações existentes. A melhor e mais fácil maneira de fazer isso é usar o Pandas . >>> import pandas as pd >>> # If all of your columns are the same type: >>> x = pd.read_csv('music.csv', header=0).values >>> print(x) [['Billie Holiday' 'Jazz' 1300000 27000000] ['Jimmie Hendrix' 'Rock' 2700000 70000000] ['Miles Davis' 'Jazz' 1500000 48000000] ['SIA' 'Pop' 2000000 74000000]] >>> # You can also simply select the columns you need: >>> x = pd.read_csv('music.csv', usecols=['Artist', 'Plays']).values >>> print(x) [['Billie Holiday' 27000000] ['Jimmie Hendrix' 70000000] ['Miles Davis' 48000000] ['SIA' 74000000]] https://numpy.org/doc/stable/reference/generated/numpy.genfromtxt.html#numpy.genfromtxt https://numpy.org/doc/stable/reference/generated/numpy.savetxt.html#numpy.savetxt https://numpy.org/doc/stable/reference/routines.io.html#routines-io https://pandas.pydata.org/ 13/01/2022 06:32 NumPy: the absolute basics for beginners — NumPy v1.22 Manual https://numpy.org/doc/stable/user/absolute_beginners.html 27/29 É simples usar o Pandas para exportar sua matriz também. Se você é novo no NumPy, você pode querer criar um dataframe do Pandas a partir dos valores em sua matriz e, em seguida, gravar o quadro de dados em um arquivo CSV com o Pandas. Se você criou este array “a” >>> a = np.array([[-2.58289208, 0.43014843, -1.24082018, 1.59572603], ... [ 0.99027828, 1.17150989, 0.94125714, -0.14692469], ... [ 0.76989341, 0.81299683, -0.95068423, 0.11769564], ... [ 0.20484034, 0.34784527, 1.96979195, 0.51992837]]) Você pode criar um dataframe Pandas >>> df = pd.DataFrame(a) >>> print(df) 0 1 2 3 0 -2.582892 0.430148 -1.240820 1.595726 1 0.990278 1.171510 0.941257 -0.146925 2 0.769893 0.812997 -0.950684 0.117696 3 0.204840 0.347845 1.969792 0.519928 Você pode salvar facilmente seu dataframe com: >>> df.to_csv('pd.csv') E leia seu CSV com: >>> data = pd.read_csv('pd.csv') Você também pode salvar seu array com o savetxtmétodo NumPy . >>> np.savetxt('np.csv', a, fmt='%.2f', delimiter=',', header='1, 2, 3, 4') Se você estiver usando a linha de comando, poderá ler seu CSV salvo a qualquer momento com um comando como: $ cat np.csv # 1, 2, 3, 4 -2.58,0.43,-1.24,1.60 0.99,1.17,0.94,-0.15 0.77,0.81,-0.95,0.12 0.20,0.35,1.97,0.52 Ou você pode abrir o arquivo a qualquer momento com um editor de texto! Se você estiver interessado em aprender mais sobre o Pandas, dê uma olhada na documentação o�cial do Pandas . Saiba como instalar o Pandas com as informações o�ciais de instalação do Pandas . https://pandas.pydata.org/index.html https://pandas.pydata.org/pandas-docs/stable/install.html 13/01/2022 06:32 NumPy: the absolute basics for beginners — NumPy v1.22 Manual https://numpy.org/doc/stable/user/absolute_beginners.html 28/29 Plotando arrays com Matplotlib Se você precisar gerar um grá�co para seus valores, é muito simples com Matplotlib . Por exemplo, você pode ter um array como este: >>> a = np.array([2, 1, 5, 7, 4, 6, 8, 14, 10, 9, 18, 20, 22]) Se você já tem o Matplotlib instalado, você pode importá-lo com: >>> import matplotlib.pyplot as plt # If you're using Jupyter Notebook, you may also want to run the following # line of code to display your code in the notebook: %matplotlib inline Tudo o que você precisa fazer para traçar seus valores é executar: >>> plt.plot(a) # If you are running from a command line, you may need to do this: # >>> plt.show() Por exemplo, você pode plotar uma matriz 1D como esta: >>> x = np.linspace(0, 5, 20) >>> y = np.linspace(0, 10, 20) >>> plt.plot(x, y, 'purple') # line >>> plt.plot(x,y, 'o') # dots Com o Matplotlib, você tem acesso a um enorme número de opções de visualização. https://matplotlib.org/ 13/01/2022 06:32 NumPy: the absolute basics for beginners — NumPy v1.22 Manual https://numpy.org/doc/stable/user/absolute_beginners.html 29/29 © Copyright 2008-2021, A comunidade NumPy. Criado usando Sphinx 4.2.0. Anterior Início rápido do NumPy Next Fundamentos do NumPy >>> fig = plt.figure() >>> ax = fig.add_subplot(projection='3d') >>> X = np.arange(-5, 5, 0.15) >>> Y = np.arange(-5, 5, 0.15) >>> X, Y = np.meshgrid(X, Y) >>> R = np.sqrt(X**2 + Y**2) >>> Z = np.sin(R) >>> ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap='viridis') Para ler mais sobre o Matplotlib e o que ele pode fazer, dê uma olhada na documentação o�cial . Para obter instruções sobre como instalar o Matplotlib, consulte a seção o�cial de instalação . Créditos da imagem: Jay Alammar http://jalammar.github.io/ https://www.sphinx-doc.org/ https://numpy.org/doc/stable/user/quickstart.html https://numpy.org/doc/stable/user/basics.html https://matplotlib.org/ https://matplotlib.org/users/installing.html https://matplotlib.org/users/installing.html
Compartilhar