Vectorizar matriz de caracteres 2D en columnas
Tengo una matriz numpy 2D como la siguiente:
a=np.array([["Science", "Blue", 3],
["Math", "Red", 4],
["Math", "Red", 5],
["Science", "Red", 3]])
Y necesito convertirlo en valores numéricos en columna, como el siguiente (salida deseada):
out=np.array([[0, 0, 0],
[1, 1, 1],
[1, 1, 2],
[0, 1, 0]])
Sin embargo, para interpretarlo en sentido descendente, también necesito tener una salida para rastrear desde los valores numéricos hasta los valores originales. Estaba pensando en algo como esto:
trace_back_dict = {0: {0: "Science", 1: "Math"},
1: {0: "Blue", 1: "Red"},
2: {0: 3, 1: 4, 2: 5}}
Donde las teclas externas son los índices de columna de la matriz original y los dictados internos dan la asignación del valor numérico: carácter.
Hay una manera fácil de hacer esto, preferiblemente algo ensklearn
estilo, donde puedo hacer unfit_transform
, y entoncestransform
(para fines de entrenamiento y prueba)?
Estaba mirando asklearn
'sLabelEncoder
, y esencialmente lo que necesito es aplicar uno diferente en cada columna. ¿Alguna sugerencia sobre cómo hacer esto de manera eficiente?
¡Gracias
Jac