es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Convirtiendo una cadena de caracteres a un entero o flotante.

Tengo la siguiente lista:

[[1.01782362e-05 1.93798303e-04 7.96163586e-05 5.08812627e-06
  1.39600188e-05 3.94912873e-04 2.33748418e-04 1.22856018e-05]]

Cuando devuelvo su tipo, obtengo:

<class 'str'>

¿La razón de esto es la notación científica utilizada, por ejemplo (es decir, e-04)?

En este caso, ¿cómo puedo convertir la lista anterior a un entero o flotante?

Gracias.

EDICIÓN

El fragmento de lista anterior proviene de este archivo CSV bajo la columna “Feature”.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    La razón por la cual obtenemos la clase ‘str’ al devolver el tipo se debe a que los elementos de la lista están escritos en notación científica, lo cual es una forma de expresar números que son demasiado grandes o demasiado pequeños para ser convenientemente escritos en forma decimal. Esta notación no es estándar, pero se ve similar cuando se imprime.

    Para convertir la lista en un entero o float, podemos usar la función map() integrada para aplicar la función float() o int() a cada elemento en la lista. Aquí hay un ejemplo de cómo convertir la lista en números de punto flotante:

    lst = [[1.01782362e-05, 1.93798303e-04, 7.96163586e-05, 5.08812627e-06,
            1.39600188e-05, 3.94912873e-04, 2.33748418e-04, 1.22856018e-05]]
    
    lst_float = list(map(lambda x: list(map(float, x)), lst))
    print(lst_float)
    

    Resultado:

    [[1.01782362e-05, 0.000193798303, 7.96163586e-05, 5.08812627e-06, 1.39600188e-05,
      0.000394912873, 0.000233748418, 1.22856018e-05]]
    

    Tenga en cuenta que estamos usando list(map()) en lugar de solo map () para convertir la lista completa de sub-listas. La función lambda se utiliza para iterar sobre cada elemento en las sub-listas y aplicar la función float().

    De manera similar, podemos usar int() en lugar de float() para convertir la lista en enteros:

    lst_int = list(map(lambda x: list(map(int, x)), lst))
    print(lst_int)
    

    Resultado:

    [[0, 0, 0, 0, 0, 0, 0, 0]]
    

    En este caso, todos los valores de la lista son menores que 1, por lo que al convertirlos en enteros, obtenemos una lista de solo ceros. Si los valores fueran todos mayores o iguales a 1, obtendríamos la parte entera del valor.

Comments are closed.