Pular para o conteúdo

    Introdução

    Curso de NumPy

    Do primeiro array à rede neural, em três níveis, com projetos integradores e um arquivo executável por capítulo.

    Por Alexsander Valente

    Para quem é este material

    O NumPy é a base de quase tudo o que se faz com dados em Python: o pandas, o matplotlib, o scikit-learn, o PyTorch e o JAX falam a língua dos arrays. Eu organizei estas notas em seis partes, da instalação até uma rede neural escrita só com NumPy, e cada ideia aparece primeiro como intuição, depois como código que você pode executar.

    PartePara quemO que você sabe fazer no final
    AmbienteQuem nunca usou NumPyInstalar, importar e entender por que o array é mais rápido que a lista
    BásicoQuem está começando com dadosCriar, indexar, remodelar e resumir arrays, e pensar em vetores em vez de laços
    IntermediárioQuem já manipula arrays e quer ir alémJuntar, ordenar, tratar dados ausentes, usar álgebra linear e ler e gravar arquivos
    AvançadoQuem escreve código numérico para produçãoEntender memória, einsum, desempenho, aleatoriedade reproduzível e testes numéricos
    EcossistemaQuem vai usar NumPy com outras bibliotecasPassar dados entre NumPy, pandas, matplotlib e scikit-learn sem perder o controle
    ProjetosQuem quer provar que aprendeuEntregar três projetos completos, com testes, um por nível

    Se você nunca programou em Python, faça antes o curso curso de Python, ao menos até o capítulo 25. Aqui eu assumo que você sabe o que é uma lista, uma função e um import.

    Como cada capítulo funciona

    Todo capítulo segue o mesmo desenho: uma explicação curta, um trecho de código e a saída real dele. Cada bloco mostra, no topo, o arquivo e as linhas do repositório onde ele está.

    • A saída é real. Eu executei cada capítulo e copiei o que o Python imprimiu. Isso vale para o NumPy 2.x, a versão que o curso assume. Em versões 1.x algumas representações mudam, como a forma de imprimir escalares.
    • Os exercícios têm solução. Tente primeiro. A solução fica recolhida e termina com assert, então você descobre sozinho se acertou.
    • O que depende da sua máquina está marcado. Tempos de execução variam muito entre computadores, então eu mostro comparações (qual foi mais rápido) em vez de números absolutos.

    Como rodar o código

    O repositório tem uma pasta por parte e um arquivo por capítulo, com o nome capNN_assunto.py.

    Estrutura do repositório
    curso-numpy/
      README.md
      pyproject.toml
      docs/
        numpy.html
      ambiente/
      básico/
      intermediario/
      avancado/
      ecossistema/
      projetos/
        estudantes/
        imagens/
        rede_neural/
      exemplos/
    

    Cada arquivo roda sozinho, a partir da raiz do repositório. Com o uv, sem instalar nada antes, o NumPy vem junto:

    Terminal
    uv run básico/cap05_criando_arrays.py
    

    Os capítulos da parte Ecossistema usam mais bibliotecas, que o grupo ecossistema instala de uma vez:

    Terminal
    uv sync --group ecossistema
    

    Qual versão este curso assume

    O curso assume Python 3.12 ou superior e NumPy 2.x. Os exemplos foram executados com o NumPy 2.4. O capítulo 37 lista o que mudou da série 1.x para a 2.x, porque muito material na internet ainda usa nomes antigos.

    Uma regra que eu repito neste curso

    Quando você escrever um for sobre os elementos de um array, pare e pergunte: existe uma forma vetorizada? Quase sempre existe, e ela é mais curta e muito mais rápida. Boa parte do que você vai aprender aqui são as ferramentas para responder "sim, existe, e é esta".