Files

1534 lines
56 KiB
Plaintext
Raw Permalink Normal View History

2018-11-26 22:47:22 -04:00
{
"cells": [
{
"attachments": {
"logpyjn.png": {
"image/png": "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
}
},
"cell_type": "markdown",
"metadata": {},
"source": [
"# *Fundamentos de Python 3 en Jupyter*\n",
"![logpyjn.png](attachment:logpyjn.png)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<br>\n",
"### El lenguaje de programación Python: Funciones"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"25\n"
]
}
],
"source": [
"x = 20 \n",
"y = 5\n",
"print(x+y) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<br>\n",
"`add_numbers` es una función que toma dos números y los suma."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"3"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"def add_numbers(x, y):\n",
" return x + y\n",
"\n",
"add_numbers(1, 2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<br>\n",
"`add_numbers` puede actualizarse agregando un tercer parámetro. Usando `print` se pueden imprimir múltiples opciones en una sola celda de `Jupyter`."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"3\n",
"6\n"
]
}
],
"source": [
"def add_numbers(x,y,z=None):\n",
" if (z==None):\n",
" return x+y\n",
" else:\n",
" return x+y+z\n",
"\n",
"print(add_numbers(1, 2))\n",
"print(add_numbers(1, 2, 3))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<br>\n",
"A `add_numbers` también pordemos agregarle un parámetro opcional llamado `flag`."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"¡Flag es verdad, y es muy útil!\n",
"23\n"
]
}
],
"source": [
"def add_numbers(x, y, z=None, flag=False):\n",
" if (flag):\n",
" print('¡Flag es verdad, y es muy útil!')\n",
" if (z==None):\n",
" return x + y\n",
" else:\n",
" return x + y + z\n",
" \n",
"print(add_numbers(1, 2, 20, flag=True))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<br>\n",
"Se puede también asignar la función `add_numbers` a una variable `a`."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"-2"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"def add_numbers(x,y,z):\n",
" return x+y+z\n",
"\n",
"a = add_numbers\n",
"a(1, 2, -5)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<br>\n",
"La función `min` devuelve el elemento más pequeño en un iterable o el más pequeño de dos o más argumentos."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"-6\n"
]
}
],
"source": [
"x = (1,3,5, -6)\n",
"minimum = min(x)\n",
"print(minimum)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<br>\n",
"La función `pow(x,y)` devuelve `x` a la potencia de `y`."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"4\n"
]
}
],
"source": [
"p = pow(2,2)\n",
"print(p)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<br>\n",
"La función `x//y` devuelve la parte entera del cociente entre `x` y `y`."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2.5\n",
"2\n"
]
}
],
"source": [
"div = 5/2\n",
"print(div)\n",
"divint = 5//2\n",
"print(divint)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<br>\n",
"La función `x%y` devuelve el resto de la división entre `x` y `y`."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0\n",
"1\n"
]
}
],
"source": [
"mod1 = 4%2\n",
"print(mod1)\n",
"mod2 = 5%2\n",
"print(mod2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<br>\n",
"### El lenguaje de programación Python: Tipos y Secuencias"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<br>\n",
"Use `type` para devolver el tipo del objeto."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"str"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type('Esto es una cadena de caracteres')"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"NoneType"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(None)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"int"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(10000)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"float"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(100000.0)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"function"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(add_numbers)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<br>\n",
"Una `tupla` es una estructura de dato inalterable. Las `tuplas` son secuencias, al igual que las `listas`. La diferencia entre las `tuplas` y las `listas` es que las `tuplas` no se pueden modificar a diferencia de las `listas`. Las `tuplas` usan paréntesis, mientras que las `listas` usan corchetes."
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'tuple'>\n",
"<class 'list'>\n"
]
}
],
"source": [
"x = (1, 'b', 25, 'c')\n",
"print(type(x))\n",
"y = [1, 'b', 25, 'c']\n",
"print(type(y))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<br>\n",
"Veamos algunas modificaciones en la estructura de datos `lista`."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<br>\n",
"Usemos `append` para gregar un elemento a la `lista`."
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[1, 'b', 25, 'c', 2.5]\n"
]
}
],
"source": [
"y.append(2.5)\n",
"print(y)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<br>\n",
"Este es un ejemplo de cómo se puede hacer un ciclo para recorrer los elementos de la `lista`."
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1\n",
"b\n",
"25\n",
"c\n",
"2.5\n"
]
}
],
"source": [
"for elemento in y:\n",
" print(elemento)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<br>\n",
"O podemos utilizar el operador de índices:"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1\n",
"b\n",
"25\n",
"c\n",
"2.5\n"
]
}
],
"source": [
"i=0\n",
"while( i != len(y) ):\n",
" print(y[i])\n",
" i = i + 1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<br>\n",
"Use `+` para concatenar `listas`."
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[1, 25, 3, 'z']"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"[1,25] + [3,'z']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<br>\n",
"Use `*` para repetir `listas`."
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[3, 'z', 3, 'z', 3, 'z', 3, 'z']"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"[3, 'z']*4"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<br>\n",
"Use el operador `in` para chequear si algo está dentro de la `lista`."
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"'z' in [3,'z', 25]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<br>\n",
"Use la notación `bracket []` para picar o rebanar `listas` o `cadenas de caracteres`"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"c\n",
"[2]\n",
"[2, 'c']\n",
"E\n",
"E\n",
"Es\n"
]
}
],
"source": [
"y =[2, 'c', 34, -2, 'f']\n",
"print(y[1]) #primer elemento de la lista\n",
"print(y[0:1]) #primer elemento devuelto como lista\n",
"print(y[0:2]) #dos primeros elementos devueltos como lista\n",
"\n",
"x = 'Esto es una cadena de caracteres'\n",
"print(x[0]) #primer caracter\n",
"print(x[0:1]) #primer caracter, especificando último caracter\n",
"print(x[0:2]) #dos primeros caracteres"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<br>\n",
"Esta instrucción devuelve el último elemento de la lista o de la cadena."
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"f\n",
"s\n"
]
}
],
"source": [
"print(y[-1])\n",
"print(x[-1])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<br>\n",
"Esta instrucción devuelve un pedazo de la `lista` o `cadena` empezando desde el cuarto elemento desde el final y deteniéndose antes del segundo elemento del final."
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[2, 'c', 34, -2, 'f']\n",
"['c', 34]\n",
"Esto es una cadena de caracteres\n",
"er\n"
]
}
],
"source": [
"print(y)\n",
"print(y[-4:-2])\n",
"print(x)\n",
"print(x[-4:-2])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<br>\n",
"Este es un pedazo de la `lista` o `cadena` desde el inicio y se detiene antes del tercer elemento."
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[2, 'c', 34, -2, 'f']\n",
"[2, 'c', 34]\n",
"Esto es una cadena de caracteres\n",
"Est\n"
]
}
],
"source": [
"print(y)\n",
"print(y[:3])\n",
"print(x)\n",
"print(x[:3])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<br>\n",
"Y este es un pedazo de la `lista` o `cadena` empezando desde el tercer elemento y siguiendo hasta el final."
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[2, 'c', 34, -2, 'f']\n",
"[-2, 'f']\n",
"Esto es una cadena de caracteres\n",
"o es una cadena de caracteres\n"
]
}
],
"source": [
"print(y)\n",
"print(y[3:])\n",
"print(x)\n",
"print(x[3:])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<br>\n",
"### Leer y escribir archivos CSV"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<br>\n",
"Vamos a importar un archivo `txt` como \n",
"uno `CSV` que contiene como columnas las etiquetas:\n",
"\n",
"* Nombre,Departamento,Mes de Cumpleaños\n",
"\n",
"Y como filas:\n",
"\n",
"* Adelis Nieves, Matemáticas, Junio\n",
"* Miguel Astor, Redes, Septiembre\n",
"* Francisco Sans, Computación Gráfica, Diciembre\n",
"* Antonio Escalante, Letras, Diciembre"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Los nombres de las columnas son: Nombre, Departamento, Mes de Cumpleaños\n",
"\tAdelis Nieves trabaja en el departamento de Matemáticas, y nació en el mes de Junio.\n",
"\tMiguel Astor trabaja en el departamento de Redes, y nació en el mes de Septiembre.\n",
"\tFrancisco Sans trabaja en el departamento de Computación Gráfica, y nació en el mes de Diciembre.\n",
"\tAntonio Escalante trabaja en el departamento de Letras, y nació en el mes de Diciembre.\n",
"Líneas procesadas: 5.\n"
]
}
],
"source": [
"import csv\n",
"\n",
"with open('empleados_cumple.txt') as csv_file:\n",
" csv_reader = csv.reader(csv_file, delimiter=',')\n",
" line_count = 0\n",
" for row in csv_reader:\n",
" if line_count == 0:\n",
" print(f'Los nombres de las columnas son: {\", \".join(row)}')\n",
" line_count += 1\n",
" else:\n",
" print(f'\\t{row[0]} trabaja en el departamento de {row[1]}, y nació en el mes de {row[2]}.')\n",
" line_count += 1\n",
" print(f'Líneas procesadas: {line_count}.')"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"<br>\n",
"### Lenguaje de programación Python: Python Numérico (NumPy)"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Creando arreglos"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<br>\n",
"Podemos generar una `lista` y convertirla en un `arreglo NumPy`."
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 1, 25, 31, 5])"
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"milista = [1, 25, 31, 5]\n",
"x = np.array(milista)\n",
"x"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<br>\n",
"O simplemente podemos pasarle una lista directamente."
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 1, 25, 31, 5])"
]
},
"execution_count": 45,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y = np.array([1, 25, 31, 5])\n",
"y"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<br>\n",
"Podemos pasarle una `lista` de `listas` para crear un `arreglo multidimensional`."
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 1, 25, 31, 5],\n",
" [10, 2, 11, 12],\n",
" [ 5, 7, 0, 1]])"
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"m = np.array([[1, 25, 31, 5], [10, 2, 11, 12], [5, 7, 0, 1]])\n",
"m"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<br>\n",
"Usa el método `shape` para encontrar las dimensiones del arreglo. (filas, columnas)"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(3, 4)"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"m.shape"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<br>\n",
"`arange` devuelve valores espaciados uniformemente dentro de un intervalo dado."
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28])"
]
},
"execution_count": 48,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"n = np.arange(0, 30, 2) # empieza en 0 cuenta de 2 en 2, se detiene antes de 30\n",
"n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<br>\n",
"`reshape` devuelve una matriz con los mismos datos con una nueva forma."
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 0, 2, 4, 6, 8],\n",
" [10, 12, 14, 16, 18],\n",
" [20, 22, 24, 26, 28]])"
]
},
"execution_count": 49,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"n = n.reshape(3, 5) #cambia la forma de manera que se obtenga una matriz 3x5\n",
"n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Combinando arreglos"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[1, 1, 1],\n",
" [1, 1, 1]])"
]
},
"execution_count": 51,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"p = np.ones([2, 3], int)\n",
"p"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<br>\n",
"Use `vstack` para apilar matrices en secuencia verticalmente (por fila)."
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[1, 1, 1],\n",
" [1, 1, 1],\n",
" [2, 2, 2],\n",
" [2, 2, 2]])"
]
},
"execution_count": 52,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.vstack([p, 2*p])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<br>\n",
"Use `hstack` para apilar arreglos en secuencia horizontalmente (por columna)."
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[1, 1, 1, 2, 2, 2],\n",
" [1, 1, 1, 2, 2, 2]])"
]
},
"execution_count": 53,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.hstack([p, 2*p])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Operaciones"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Use `+`, `-`, `*`, `/` and `**` para realizar operaciones de suma , resta, multiplicación, división y potencia elemento a elemento."
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[ 1 25 31 5]\n",
"[ 1 25 31 5]\n",
"[ 2 50 62 10]\n",
"[0 0 0 0]\n"
]
}
],
"source": [
"print(x)\n",
"print(y)\n",
"print(x + y) # suma elemento a elemento [1 2 3] + [4 5 6] = [5 7 9]\n",
"print(x - y) # resta elemento a elemento [1 2 3] - [4 5 6] = [-3 -3 -3]"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[ 1 25 31 5]\n",
"[ 1 25 31 5]\n",
"[ 1 625 961 25]\n",
"[1. 1. 1. 1.]\n"
]
}
],
"source": [
"print(x)\n",
"print(y)\n",
"print(x * y) # multiplicación elemento a elemento [1 2 3] * [4 5 6] = [4 10 18]\n",
"print(x / y) # división elemento a elemento [1 2 3] / [4 5 6] = [0.25 0.4 0.5]"
]
},
{
"cell_type": "code",
"execution_count": 56,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[ 1 25 31 5]\n",
"[ 1 625 961 25]\n"
]
}
],
"source": [
"print(x)\n",
"print(x**2) # potencia elemento a elemento [1 2 3] ^2 = [1 4 9]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Producto punto o escalar:** \n",
"\n",
"$ \\begin{bmatrix}x_1 \\ x_2 \\ x_3\\end{bmatrix}\n",
"\\cdot\n",
"\\begin{bmatrix}y_1 \\\\ y_2 \\\\ y_3\\end{bmatrix}\n",
"= x_1 y_1 + x_2 y_2 + x_3 y_3$"
]
},
{
"cell_type": "code",
"execution_count": 57,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[ 1 25 31 5]\n",
"[ 1 25 31 5]\n"
]
},
{
"data": {
"text/plain": [
"1612"
]
},
"execution_count": 57,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"print(x)\n",
"print(y)\n",
"x.dot(y) #producto escalar "
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[ 1 25 31 5]\n",
"[[ 1 25 31 5]\n",
" [ 1 625 961 25]]\n",
"2\n"
]
}
],
"source": [
"print(y)\n",
"z = np.array([y, y**2])\n",
"print(z)\n",
"print(len(z)) #número de filas del arreglo"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<br>\n",
"Vamos a mirar la transposición de matrices. La transposición permuta las dimensiones de la matriz."
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 1, 1],\n",
" [ 25, 625],\n",
" [ 31, 961],\n",
" [ 5, 25]])"
]
},
"execution_count": 62,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"zt = np.transpose(z, axes=None)\n",
"zt"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<br>\n",
"Las dimensiones del arreglo `zt` son `(4,2)` después de la transposición."
]
},
{
"cell_type": "code",
"execution_count": 63,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(4, 2)"
]
},
"execution_count": 63,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"zt.shape"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<br>\n",
"Se puede usar también `.T` para obtener la transpuesta de un arreglo."
]
},
{
"cell_type": "code",
"execution_count": 65,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[ 1 1]\n",
" [ 25 625]\n",
" [ 31 961]\n",
" [ 5 25]]\n"
]
},
{
"data": {
"text/plain": [
"array([[ 1, 25, 31, 5],\n",
" [ 1, 625, 961, 25]])"
]
},
"execution_count": 65,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"print(zt)\n",
"zt.T"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Indexando/Rebanando"
]
},
{
"cell_type": "code",
"execution_count": 66,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144])"
]
},
"execution_count": 66,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s = np.arange(13)**2\n",
"s"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<br>\n",
"Use la notación de `bracket []` para obtener valores en el índice indicado. Recuerde que la indexación comienza en 0."
]
},
{
"cell_type": "code",
"execution_count": 67,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(0, 16, 144)"
]
},
"execution_count": 67,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s[0], s[4], s[-1]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<br>\n",
"Use `:` para indicar un rango. `array[empieza:termina]`\n",
"\n",
"\n",
"Dejando `empieza` or `termina` vacío quedará predeterminado al principio / final de la matriz."
]
},
{
"cell_type": "code",
"execution_count": 69,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 1, 4, 9, 16])"
]
},
"execution_count": 69,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s[1:5]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<br>\n",
"Use contadores negativos desde el final."
]
},
{
"cell_type": "code",
"execution_count": 70,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 81, 100, 121, 144])"
]
},
"execution_count": 70,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s[-4:]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<br>\n",
"Se puede usar un segundo `:` para indicar el tamaño del paso. `array [empieza: termina: paso]`\n",
"\n",
"Aquí estamos comenzando el quinto elemento desde el final, y contando hacia atrás cada 2 hasta que se alcanza el comienzo de la matriz."
]
},
{
"cell_type": "code",
"execution_count": 71,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([64, 36, 16, 4, 0])"
]
},
"execution_count": 71,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s[-5::-2]"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.4"
}
},
"nbformat": 4,
"nbformat_minor": 1
}