{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Introducción a NumPy" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "_Hasta ahora hemos visto los tipos de datos más básicos que nos ofrece Python: integer, real, complex, boolean, list, tuple... Pero ¿no echas algo de menos? Efectivamente, los __arrays__. _\n", "\n", "_En este notebook nos adentraremos en el paquete NumPy: aprenderemos a crear distintos arrays y a operar con ellos_." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## ¿Qué es un array? " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Un array es un __bloque de memoria que contiene elementos del mismo tipo__. Básicamente:\n", "\n", "* nos _recuerdan_ a los vectores, matrices, tensores...\n", "* podemos almacenar el array con un nombre y acceder a sus __elementos__ mediante sus __índices__.\n", "* ayudan a gestionar de manera eficiente la memoria y a acelerar los cálculos.\n", "\n", "\n", "---\n", "\n", "| Índice | 0 | 1 | 2 | 3 | ... | n-1 | n |\n", "| ---------- | :---: | :---: | :---: | :---: | :---: | :---: | :---: |\n", "| Valor | 2.1 | 3.6 | 7.8 | 1.5 | ... | 5.4 | 6.3 |\n", "\n", "---\n", "\n", "__¿Qué solemos guardar en arrays?__\n", "\n", "* Vectores y matrices.\n", "* Datos de experimentos:\n", " - En distintos instantes discretos.\n", " - En distintos puntos del espacio.\n", "* Resultado de evaluar funciones con los datos anteriores.\n", "* Discretizaciones para usar algoritmos de: integración, derivación, interpolación...\n", "* ... " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## ¿Qué es NumPy?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "NumPy es un paquete fundamental para la programación científica que __proporciona un objeto tipo array__ para almacenar datos de forma eficiente y una serie de __funciones__ para operar y manipular esos datos.\n", "Para usar NumPy lo primero que debemos hacer es importarlo:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'1.14.0'" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import numpy as np\n", "#para ver la versión que tenemos instalada:\n", "np.__version__" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Nuestro primer array" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "¿No decíamos que Python era fácil? Pues __creemos nuestros primeros arrays__:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import numpy as np" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([1, 2, 3, 4])" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Array de una dimensión\n", "mi_primer_array = np.array([1, 2, 3, 4]) \n", "mi_primer_array" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1 2 3 4]\n" ] } ], "source": [ "# Podemos usar print\n", "print(mi_primer_array)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "numpy.ndarray" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Comprobar el tipo de mi_primer_array\n", "type(mi_primer_array)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "dtype('int64')" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Comprobar el tipo de datos que contiene\n", "mi_primer_array.dtype" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Los arrays de una dimensión se crean pasándole una lista como argumento a la función `np.array`. Para crear un array de dos dimensiones le pasaremos una _lista de listas_:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "# Array de dos dimensiones\n", "mi_segundo_array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "