"""
To try the examples in the browser:
1. Type code in the input cell and press
Shift + Enter to execute
2. Or copy paste the code, and click on
the "Run" button in the toolbar
"""
# The standard way to import NumPy:
import numpy as np
# Create a 2-D array, set every second element in
# some rows and find max per row:
x = np.arange(15, dtype=np.int64).reshape(3, 5)
x[1:, ::2] = -99
x
# array([[ 0, 1, 2, 3, 4],
# [-99, 6, -99, 8, -99],
# [-99, 11, -99, 13, -99]])
x.max(axis=1)
# array([ 4, 8, 13])
# Generate normally distributed random numbers:
rng = np.random.default_rng()
samples = rng.normal(size=2500)
samples
Quase todos os cientistas que trabalham em Python se baseiam na potência do NumPy.
NumPy traz o poder computacional de linguagens como C e Fortran para Python, uma linguagem muito mais fácil de aprender e usar. Com esse poder vem a simplicidade: uma solução no NumPy é frequentemente clara e elegante.
A API do NumPy é o ponto de partida quando bibliotecas são escritas para explorar hardware inovador, criar tipos de arrays especializados, ou adicionar capacidades além do que o NumPy fornece.
Biblioteca de Arrays | Recursos e áreas de aplicação | |
Dask | Arrays distribuídas e paralelismo avançado para análise, permitindo desempenho em escala. | |
CuPy | Biblioteca de matriz compatível com NumPy para computação acelerada pela GPU com Python. | |
JAX | Transformações combináveis de programas NumPy: vetorização, compilação just-in-time para GPU/TPU. | |
Xarray | Arrays multidimensionais rotuladas e indexadas para análise e visualização avançadas | |
Sparse | Biblioteca de arrays compatíveis com o NumPy que pode ser integrada com Dask e álgebra linear esparsa da SciPy. | |
PyTorch | Framework de deep learning que acelera o caminho entre prototipação de pesquisa e colocação em produção. | |
TensorFlow | Uma plataforma completa para aprendizagem de máquina que permite construir e colocar em produção aplicações usando ML facilmente. | |
MXNet | Framework de deep learning voltado para flexibilizar prototipação em pesquisa e produção. | |
Arrow | Uma plataforma de desenvolvimento multi-linguagens para dados e análise para dados armazenados em colunas na memória. | |
xtensor | Arrays multidimensionais com broadcasting e avaliação preguiçosa (lazy computing) para análise numérica. | |
Awkward Array | Manipulação de dados JSON-like com sintaxe NumPy-like. | |
uarray | Sistema de backend Python que dissocia a API da implementação; unumpy fornece uma API NumPy. | |
tensorly | Ferramentas para aprendizagem com tensores, algebra e backends para usar NumPy, MXNet, PyTorch, TensorFlow ou CuPy sem esforço. |
NumPy está no centro de um rico ecossistema de bibliotecas de ciência de dados. Um fluxo de trabalho típico de ciência de dados exploratório pode parecer assim:
O NumPy forma a base de bibliotecas de aprendizagem de máquina poderosas como scikit-learn e SciPy. À medida que a disciplina de aprendizagem de máquina cresce, a lista de bibliotecas construidas a partir do NumPy também cresce. As funcionalidades de deep learning do TensorFlow tem diversas aplicações — entre elas, reconhecimento de imagem e de fala, aplicações baseadas em texto, análise de séries temporais, e detecção de vídeo. O PyTorch, outra biblioteca de deep learning, é popular entre pesquisadores em visão computacional e processamento de linguagem natural. O MXNet é outro pacote de IA, que fornece templates e protótipos para deep learning.
Técnicas estatísticas chamadas métodos de ensemble tais como binning, bagging, stacking, e boosting estão entre os algoritmos de ML implementados por ferramentas tais como XGBoost, LightGBM, e CatBoost — um dos motores de inferência mais rápidos. Yellowbrick e Eli5 oferecem visualizações para aprendizagem de máquina.
NumPy é um componente essencial no crescente campo de visualização em Python, que inclui Matplotlib, Seaborn, Plotly, Altair, Bokeh, Holoviz, Vispy, Napari, e PyVista, para citar alguns.
O processamento de grandes arrays acelerado pela NumPy permite que os pesquisadores visualizem conjuntos de dados muito maiores do que o Python nativo poderia permitir.