Bem vindos ao guia para iniciantes absolutos do NumPy. NumPy, Python numérico (Numerical Python), é um pacote de Python com o código aberto (não precisa pagar para usar). Este pacote contém estrutura de dados de matriz multidimensionais. Nesse post vamos aprender a utilidade e como usar esse pacote.
No ramo de ciência de dados, o Numpy é muito usado em várias formas. Mas, se você está começando, deve estar se perguntando o que é isso. Pois bem, vamos falar sobre isso:
O que é NumPy?
NumPy é um pacote de Python fundamental para computação científica. Fornece um objeto de matriz multidimensional, vários objetos derivados (como matrizes e matrizes mascaradas). Essa variedade de rotinas para operações rápidas em matrizes, inclui matemática, manipulação de formas, classificação, ordenação, álgebra linear e muito mais.
O NumPy é mais um objecto ndarray. O que significa isso? Ele isola arrays n-dimensionais de tipos de dados homogêneos, com muitas operações sendo executadas em código compilado para garantir o desempenho. Que é muito diferente das sequências tradicionais do Python.
Porque Usar NumPy?
As listas em Python são ótimas e servem para vários propósitos. Você pode colocar diferentes tipos de dados dentro delas (números, textos, floats, etc.), e elas funcionam bem quando está lidando com poucos elementos.
Mas quando estamos falando de muitos dados, a lista pode deixar o seu código meio que devagar. Dependendo do tipo de dados e do que você está usando, pode existir uma opção melhor. Usando a estrutura certa, é possível deixar o código mais rápido, usar menos memória e escrever de forma mais simples.
E é aí onde o NumPy se destaca. Ele é ótimo quando você tem muitos dados do mesmo tipo e quer fazer cálculos de forma rápida usando o processador.
O que é um Array?
Em programação de computador, array ou matriz é uma estrutura para armazenar e recuperar os dados. Todas a posições são numeradas e organizadas. Aquele número guarda somente uma coisa. Vamos falar mais sobre isso daqui a pouco.
A principal diferença entre array e listas é que o array só pode ter um tipo de item. Somente números ou somente letras. Com a lista, você já pode misturar.
A princípio, você vai observar que o array (matriz) funciona muito semelhante a uma lista, como já havíamos falado. Uma maneira de inicializar a matriz é usar a sequência de Python como uma lista. Por exemplo.
a = np.array([1, 2, 3, 4, 5, 6])
array([1, 2, 3, 4, 5, 6])
Esse tipo de array é unidimensional com todos os elementos em dentro dos colchetes. Geralmente, esse funciona mais como uma lista. Os elementos da matriz podem ser alterados. Se quizer mudar o primeiro número, é fácil de fazer.
a[0] = 10
array([10, 2, 3, 4, 5, 6])
Fundamentos da Matriz
Um fundamento principal diferente entre lista e matriz ou array, é que no NumPy, cada dimensão de um array também pode ser chamada de eixo. Esse nome ajuda a diferenciar a dimensão do array e a dimensão dos dados que ele representa.
Imagine a qualificação de uma corrida. Cada carro é classificado em uma grelha tendo então o seu lugar específico no eixo.

Mas o array pode ser bem mais complexo que somente 2x2. As possibilidades são infinitas. Vamos analisar um exemplo mais complexo.
a = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
array([[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12]])
Nesse caso, se quisermos acessar o número 8, vamos ter de identificar o index desse número, no caso seria a[1, 3].
Por que? Lembre-se que o Python sempre começa contando do zero. Então o resultado seria isso:

Instalando e Importando o Pacote
Se você não tiver o pacote no seu ambiente virtual, comece instalando:
pip install numpy
Quando tudo estiver instalado, simplesmente importe o pacote no seu workbook ou script. Apesar de não precisar, é muito comum apelidar de np.
import numpy as np
Atributos de Array: ndim
Assim como listas e dataframes, o NumPy tem atributos que facilitam o trabalho de análises. Isso nos ajuda a entender as dimensões, tamanho, tipo, e assim por diante.
Usando o nosso último exemplo com a variável a, vamos fazer uma análise geral.
>>> a = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
>>> a
array([[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12]])
Vamos verificar o número de dimensões do array.
>>> a.ndim
2
Esse resultado pode ser estranho para quem está começando. Estamos contando os eixos e não os conjuntos. As dimensões são diferentes do shape.
Vamos falar um pouco sobre dimensões ou eixos. Os eixos descrevem a estrutura do array, indicando quantas direções os dados estendem.
As dimensões são como modos ou direções para organizar elementos dentro do array. Isso determina como os dados são acessados e manipulados.
Exemplos
Um array unidimensional (1D) é como uma lista simples ou um vetor, com apenas uma direção.
>>> uma_direcao = np.array([1, 2, 3, 4, 5, 6])
Um array bidimensional (2D) se parece com uma tabela, possuindo linhas e colunas. Assim como já vimos anteriormente.
>>> a = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
Observe que há dois colchetes no início e no fim. Fazendo então bidimensional.
Já um array tridemensional (3D) pode ser visualizado como uma pilha de tabelas ou cubo de dados. Por exemplo, se fizermos algo assim:
>>> x = np.arange(27).reshape((3, 3, 3))
>>> x
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]]])
Aqui temos tres eixos. Se passarmos o ndim, você vai ver que o resultado é 3.
>>> x.ndim
3
Atributos de Array: shape
O shape do array vai contar os conjuntos e quantos items no conjunto. Vamos olhar cada caso.
>>> b = np.array([1, 2, 3, 4, 5, 6])
>>> b.shape
(6,)
No caso acima, só tem um resultado porque é 1D.
>>> a = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
>>> a.shape
(3, 4)
Já esse aqui, você observa que tem 3 conjuntos com 4 itens dentro de cada conjunto, pois é 2D.
>>> x
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]]])
>>> x.shape
(3, 3, 3)
Finalmente, nesse último caso, o resultado mostra 3 eixos, 3 conjuntos, com 3 items.
Como Criar um Array Básico
Existem várias maneiras de criar arrays. Vamos começar com zeros. Usando o código abaixo, vamos criar um array de zeros.
>>> np.zeros(3)
array([0., 0., 0.])
Podemos também fazer algo similar com 1s.
>>> np.ones(3)
array([1., 1., 1.])
Podemos também criar arrays vazios (empty).
>>> np.empty(4)
array([0., 0., 0., 0.])
Também podemos gerar uma sequência de números dentro da matriz.
>>> np.arange(6)
array([0, 1, 2, 3, 4, 5])
O 6 indica a quantidade de números que você quer na sequência.
Finalmente, podemos também fazer da maneira como fiz antes. Criando a sequência de números e reformatar de uma maneira onde todos os dados sejam uniformemente distribuídos.
>>> np.arange(27).reshape((3, 3, 3))
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]]])
Conclusão
Nesse post vimos que o NumPy é uma ferramenta muito útil. É importante lembrar que os comandos do NumPy são infinitos. O que mostramos aqui foi somente o básico do básico. No mundo da ciência de dados, essa é uma ferramenta muito usada, e dominar esse assunto é importantíssimo para qualquer pessoa querendo seguir carreira nesse ramo.
Comentários (0)
Seja o primeiro a comentar!
Deixe um comentário