linspace logspace y ravel en python

logo python

Dentro de la librería Numpy, existen múltiples métodos para crear arrays. Tres  de ellas, que habrán visto en algún momento, son linspace logspace y ravel.

En este post explicaré rápidamente su empleo.

linspace()

Su sintaxis es :

numpy.linspace(valor-inicial, valor-final, número de valores, valor-final-a-incluir, tipo de valor)

Crea un array, que estará formado por una cantidad de valores dada y que quedará equiespaciada dentro de los limites dados, o sea el valor inicial y el valor final.

Los tres parámetros primeros son obligatorios, los dos restantes opcionales.

El valor final por defecto, queda incluido en el array, pero puede ser configurado, para lo contrario, en el parámetro valor final a incluir, que asimila valores True o False

a = np.linspace(1, 4, 4)
a
array([1., 2., 3., 4.])

linspace()

Asimila especificaciones, como el tipo de dato en su ultimo parámetro, que añade dtype():

a = np.linspace(1, 4, 4 dtype = "int")
a
array([1, 2, 3, 4])
print(a.dtype)
print(a.shape)
int32 (4,)

logspace()

Funciona de forma muy parecida a linspace(), pero la escala de valores del array es logaritmica:

b = np.logspace(2, 3, 10)
b
La función numpy.logspace

Como ultimo elemento, decir que logspace() aplica por defecto base 10 en el algoritmo pero puede ser modificado.

ravel()

devuelve una matriz ( de una sola dimensión) contigua aplanada, que posee todos los elementos del mismo tipo que esta.

Su sintaxis es

numpy.ravel(array, order = 'C')
array : [array_like]array de entrada
order : [C-contiguous, F-contiguous, A-contiguous; optional]         

C-contiguous. Es el  orden contiguo en memoria (el ultimo índice, en este caso, varia mas rapido)

El orden C significa que operar el aumento de fila en la matriz será un poco más rápido

El orden F (FORTRAN) indica que en la memoria (el primer índice varía más rápido). Significa que las operaciones en columnas serán más rápidas.

Diferencias entre. flatten y ravel

«A» significa leer / escribir los elementos en un orden de índice similar a Fortran,  si la matriz es Fortran contigua en la memoria, de lo contrario será orden C.

Espero modestamente que este artículo, sirva de ayuda a alguien.

Gracias

“…… justo todo lo que nos hace diferentes y superiores, nos hace peor y débiles: el oxigeno, la mente, la palabra y un corto e inútil etc”

Y

Indicar el separador en archivo csv en Mac, con Python(sep).

logo python

Ante todo, esta es una solución para personas que trabajen en Mac con Python y la librería Pandas, para no programadores, la solución es otra.

Un problema común, es que al crear un archivo csv, cometamos una equivocación y nuestro archivo no se visualice correctamente, lo que nos traerá problemas, sí como es mi caso quiero emplearlo como dataset en Python.

Digamos que tengo un archivo del tipo  Excel, con dos columnas «vendedores» y «ventas».

La columna «vendedores» tiene valores enteros, y la columna «ventas», valores decimales.

La dificultad a la que nos enfrentamos es que en Mac, para cambiar el separador hay que ir hasta el propio registro que establece los separadores decimales, de todo el sistema, ya sea directamente o mediante comandos(solución para no programadores).

Siendo como soy, enemigo de tocar lo que no debo tocar, para evitar errores futuros de los cuales olvidaré la causa, busqué una solución más sencilla, que ya existe en el «abc» de Pandas. El argumento sep().

Cuando creaba un csv, ya sea en formato UTF 8, o csv para Mac,  lo que hacia era separarme las filas por , coma y no punto y coma.

Pandas resuelve esto fácilmente, con él parámetro sep(), que permite escoger el separador en una cadena dada.

Veremos la salida del mismo archivo dos veces, sin utilizar sep y dándole uso.

Sin usar sep

 Utilizando sep

Espero modestamente que este artículo, sirva de ayuda a alguien.

Gracias

Y yo tenia respuesta a todas sus preguntas, incluso a las que aún no se ha hecho.

Y

¿Qué significa el guion bajo en Python?

logo python

Todo el que comienza a programar en en este lenguaje, se habrá preguntado cúal es el significado que tiene él guion bajo (_) en Python, y cuando se usa.

Recuperando también esa inquietud que tuve en su momento, intentare explicarle su importancia y uso. 

El guión bajo (_), es un carácter que se emplea  para diferentes tareas.

Almacenando el ultimo valor de interprete:

Como puede verse en el ejemplo, el guion almacena el ultimo valor que expresa el interprete de Python, incluso nos permite realizar diferentes operaciones matemáticas.

En la nomenclatura defunciones y variables, indicando una importancia especifica.

En este caso,  hay diferentes usos, que están regidos todos, por la convención PEP8, que es la que Python, recomienda como buenas practicas y utiliza.

Estos pueden ser:

Un guión bajo (_) después de un nombre (class_)

Se utiliza para evitar conflictos con palabras clave o con elementos integrados en Python.

Un guión bajo (_) antes de un nombre (_variable)

En este caso indica que el nombre que sigue al guion es una clase, función, método o variable, con carácter privado o interno, advirtiendo a quien acceda al código, este aspecto de su implementación.

Una salvedad aquí, es que en Python las variables no son del todo privadas, y si siempre se podrá acceder a ellas.

Un doble guión bajo (__) antes de un nombre (__perro)

En la documentación de Python, se especifica que ” cualquier mombre de la forma __spam se sustituye por _NombreClase__spam”.

Para nosotros, NombreClase(),  será el nombre de la clase  donde hemos colocado el doble guión bajo (__).

En definitiva, lo que hace Python en este caso, uno de los mas comunes, es manipular el nombre de la clase, para evitar conflictos

Un doble guion bajo (__) antes y después de un nombre ( __casa__)

Esta funcionalidad del guion,  se utiliza para indicar métodos específicos de Python, conocidos como métodos mágicos, __init__, __file__

Esta convención del lenguaje, es indicativa, normalmente podemos sobrescribir alguno de estos métodos, dándole otro significado, (yo prefiero no hacerlo, pero es totalmente posible).

Su objetivo no es otro, que evitar conflictos entre los métodos mágicos y algún método definido por nosotros, al momento de escribir el código.

Facilitando la legibilidad

Podemos usar el guion bajo (_), para separar los dígitos de un número de modo que sea mas fácil leerlo. Esta función es puramente decoradora y actúa un poco como el punto(.) que se añade en Excel a trabajar con datos en formato número.

Para internacionalizar cadenas

Tal y como sucede en C el guion bajo(_), se usa para indicar que una cadena es traducible.

En Python con el uso de  la librería gettext, se aplica esta convención, también

Ignorar valores

Cuando deseamos ignorar valores  basta con asignar un guion bajo (_). Esta funcionalidad, es fabulosa y puede utilizarse al recorrer arreglos, o desempaquetarlos.

……. y hasta aquí.

…., si avanzo sígueme, si me detengo empújame, si retrocedo mátame…….

Error EOL while scanning string literal

python error

Error EOL while scanning string literal es un error común, que suele aparecer cuando comenzamos a trabajar con Python, e incluso si no somos cuidadosos también después es :

EOL while scanning string literal 

Este error se debe a un error en la sintaxis del script que hemos escrito.

Las causas más comunes en mi caso, eran con los saltos de línea o no cerrar una cadena , como en estos ejemplos a continuación:

foo = 'texto de ejemplo

df.Shape.value_counts().plot(kind=bar', alpha=0.5)

En ambos casos me he saltado una comilla y al momento de correr mi script obtendré el dichoso error.

Otros errores en Python

De igual modo sucedería, si en  vez de no colocar la comilla, la coloco en la siguiente línea:

 foo = 'texto de ejemplo
'

Cuando escribimos texto y queremos añadir un salto de línea, lo correcto es escapar con la solución que nos ofrece Python \

Foo = ‘mi texto\
en líneas\
diferentes\’

Una buena practica es abrir y cerrar las comillas antes de escribir el script.

Muchos editores de código, incluyen la función de autocompletado, lo cual puede ayudarte mucho a evitar este tipo de errores tan comunes.

«Lo que nos hace llegar mas allá, es la misma curiosidad que tiene el niño que quiere saber, lo que hay dentro del juguete»

Translate »