Skip to content

Instantly share code, notes, and snippets.

@felipessalvatore
Last active October 26, 2016 01:49
Show Gist options
  • Save felipessalvatore/a0a23f11be877e64de16c9e33987f7f0 to your computer and use it in GitHub Desktop.
Save felipessalvatore/a0a23f11be877e64de16c9e33987f7f0 to your computer and use it in GitHub Desktop.
Transform matrix in lists and classes in one hot encoding
#ARRAY TRANSFORMATION
import numpy as np
#o melhor modo de transformar uma lista de matrizes n x n
# em uma lista de listas de tamanho n*n eh
def reformat(lista,n):
lista = lista.reshape((-1, n*n)).astype(np.float32)
return lista
ex1 = np.eye(2)
ex2 = np.eye(2) +ex1*2
ex = np.array([ex1,ex2])
re = reformat(ex,2)
print(ex)
print(' ')
print(re)
print(' ')
print('-----------------------------------------')
print(' ')
#para one-hot-encoding temos uma lista de classes 0,1,2,3, ... n
#e temos que transformar cada classe num array de tamanho n
#que tenha 1 numa posicao e 0 nas outras. Um modo rapido de fazer eh:
exemplo_classes = np.array([0,1,2,3,4,5,6])
size = 7
quasi_one_hot = (np.arange(size) == exemplo_classes[:,None])
print(quasi_one_hot)
#para cada i em exemplo_classes vamos ter uma array de tamanho size
#que tem o valor True na posicao i e False no resto. Para transformar
#em um vetor de numeros basta fazer
one_hot = quasi_one_hot.astype(np.float32)
print(' ')
print(one_hot)
#com arrays podemos criar arrays boleanas com ==
a = np.array([0,1,2,3,4,5,6])
b = np.array([0,1,2,3,4,5,55])
c = (a==b)
#podemos comparar dois arrays em relacao a posicao do maior argumento
a1 = np.arange(6).reshape(2,3)
b1 = np.arange(1,7).reshape(2,3)
print(' ')
print(np.argmax(a1) == np.argmax(b1))
print(np.argmax(a1,0) == np.argmax(b1,0))
print(np.argmax(a1,1) == np.argmax(b1,1))
print(' ')
#numpy.argmax(a, axis=None, out=None)[source]
#quando axis=0 a funcao retorna os a posicao
#do maior valor para cada coluna
#quando axis=1 a funcao retorna os a posicao
#do maior valor para cada linha
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment