In [1]:
import sys
import numpy as np
print(sys.version) # Versao do python - Opcional
print(np.__version__) # VErsao do modulo numpy - Opcional
In [2]:
# Criando um vetor padrao com 25 valores
npa = np.arange(25)
In [3]:
npa
Out[3]:
In [4]:
# Transformando o vetor npa em um vetor multidimensional usando o metodo reshape
npa.reshape(5,5)
Out[4]:
In [5]:
# Podemos criar um array multidimensional de zeros usando o metodo zeros
np.zeros([5,5])
Out[5]:
In [6]:
# Algumas funcoes uteis
npa2 = np.zeros([5,5])
In [12]:
# Tamanho (numero de elementos)
npa2.size
Out[12]:
In [13]:
# Forma (numero de linhas e colunas)
npa2.shape
Out[13]:
In [14]:
# Dimensoes
npa2.ndim
Out[14]:
In [16]:
# Pode se criar arrays com o numero de dimensoes que voce quiser
# Ex: um array com 3 dimensoes. (2 elemenso em cada dimensao)
np.arange(8).reshape(2,2,2)
Out[16]:
In [18]:
# 4 Dimensoes com 4 elementos em cada (zeros como elementos)
# np.zeros([4,4,4,4])
# 4 Dimensoes com 2 elementos em cada
np.arange(16).reshape(2,2,2,2)
Out[18]:
Uma das maiores vantagens da vetorizaçao eh a possibilidade da aplicacao de inumeras operaçoes diretamente a cada um dos elementos do objeto. Tais operaçoes sao as aritmeticas, logica, aplicaçao de funçoes especificas, etc...
In [25]:
# Gerando uma semente para gerar numeros aleatorios
np.random.seed(10)
In [27]:
# Gerando uma lista de 25 numeros inteiros aleatorios entre 1 e 10
np.random.random_integers(1,10,25)
Out[27]:
In [40]:
#Veja que sempre obtemos a mesma sequencia aleatoria para a mesma semente]
# caso contrario, se nao reajustarmos a semente ele sempre criara uma sequencia diferente
np.random.seed(10)
np.random.random_integers(1,10,25)
Out[40]:
In [41]:
np.random.seed(10)
npa2 = np.random.random_integers(1,10,25).reshape(5,5)
In [42]:
npa2
Out[42]:
In [43]:
npa3 = np.random.random_integers(1,10,25).reshape(5,5)
In [44]:
npa3
Out[44]:
In [45]:
# Aplicando operaçoes
# comparaçoes
npa2 > npa3
Out[45]:
In [50]:
# Contar quantos alores temos que npa2 > npa3 (em python, TRUE eh tratato como 1 )
(npa2 > npa3).sum()
Out[50]:
In [55]:
# Podemos aplicar esta soma por colunas [primeira dimensao] (axis=0)
(npa2 > npa3).sum(axis=0)
Out[55]:
In [56]:
# Podemos aplicar esta soma por linha [segunda dimensao] (axis=1)
(npa2 > npa3).sum(axis=1)
Out[56]:
In [57]:
npa2
Out[57]:
In [66]:
# OPERAÇOES VALIDAS TANTO PARA O MAXIMO QUANTO PARA O MINIMO
# Encontrando o valor maximo em toda a matrix
npa2.max()
Out[66]:
In [62]:
# Encontrando o valor maximo por colunas
npa2.max(axis=0)
Out[62]:
In [64]:
# Encontrando o valor maximo por linhas
npa2.max(axis=1)
Out[64]:
In [67]:
# Fazer a Matriz Transposta usando o metodo transpose
npa2.transpose()
Out[67]:
In [69]:
# Fazer a Matriz Transposta usando a propriedade T
npa2.T
Out[69]:
In [70]:
# Multiplicar esta transposta por ela mesma
npa2.T * npa2.T
Out[70]:
Estas duas propriedades sao bastante uteis quando para trabalhar com arrays multimensionais.
flatten unidemensionaliza o array multidimensional mantendo-o imutavel.ravel unidemensionaliza o array multidimensional transformando-o em mutavel.
Claramente percebemos a vantagem do metodo ravel caso queiramos alterar algum valor do array.
In [78]:
# Unidimensionalizando a matrix npa2 usando o metodo flatten [pythonizado como "flattening"]
npa2.flatten()
Out[78]:
In [79]:
# Unidimensionalizando a matrix npa2 usando o metodo ravel [pythonizado como "raveling"]
#npa2.flatten()
r = npa2.ravel()
In [80]:
r
Out[80]:
In [81]:
npa2
Out[81]:
In [82]:
# Unidimensinalizando e tentando modificar o primeiro elemento para 25
npa2.flatten()[0] = 25
In [86]:
npa2 # nada deve ocorrer, o array multidimensional deve permanecer inalterado
Out[86]:
In [90]:
# Modificando o primeiro elemento no "raveled" array
r[0] = 25 # Deve alterar o valor do array original
In [91]:
npa2
Out[91]:
In [96]:
# Mostrando os valores do array npa para comparar com as proximas funoes
npa
Out[96]:
In [93]:
# Soma cumulativa dos valores dos elemntos do array cumsum
npa.cumsum()
Out[93]:
In [98]:
# Produto cumulativo dos valores dos elemntos do array cumsum
npa.cumprod() # Resultara em zeros porque o primeiro elemento eh zero
Out[98]:
Elaborado por Hans Rogerio Zimermann com bases no curso Data Analysis in Python with Pandas de Bill Chambers - UDEMY.