{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "\"AeroPython\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Secciones de arrays" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "_Hasta ahora sabemos cómo crear arrays y realizar algunas operaciones con ellos, sin embargo, todavía no hemos aprendido cómo acceder a elementos concretos del array_" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import numpy as np" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Arrays de una dimensión" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "arr = np.arange(10)\n", "arr" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Accediendo al primer elemento\n", "arr[0] " ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "9" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Accediendo al último\n", "arr[-1]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### __¡Atención!__ " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "NumPy devuelve __vistas__ de la sección que le pidamos, no __copias__. Esto quiere decir que debemos prestar mucha atención a este comportamiento:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0 1 2 3 4 5 6 7 8 9]\n", "[5 6 7 8 9]\n" ] } ], "source": [ "arr = np.arange(10)\n", "a = arr[5:]\n", "\n", "print(arr)\n", "print(a)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[ 0 1 2 3 4 999 6 7 8 9]\n", "[999 6 7 8 9]\n" ] } ], "source": [ "arr[5] = 999\n", "\n", "print(arr)\n", "print(a)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Lo mismo ocurre al revés:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0 1 2 3 4 5 6 7 8 9]\n", "[5 6 7 8 9]\n" ] } ], "source": [ "arr = np.arange(10)\n", "a = arr[5:]\n", "\n", "print(arr)\n", "print(a)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[ 0 1 2 3 4 5 6 7 8 999]\n", "[ 5 6 7 8 999]\n" ] } ], "source": [ "a[-1] = 999\n", "\n", "print(arr)\n", "print(a)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`a` apunta a las direcciones de memoria donde están guardados los elementos del array `arr` que hemos seleccionado, no copia sus valores, a menos que explícitamente hagamos:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0 1 2 3 4 5 6 7 8 9]\n", "[5 6 7 8 9]\n" ] } ], "source": [ "arr = np.arange(10)\n", "a = arr[5:].copy()\n", "\n", "print(arr)\n", "print(a)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[ 0 1 2 3 4 999 6 7 8 9]\n", "[5 6 7 8 9]\n" ] } ], "source": [ "arr[5] = 999\n", "\n", "print(arr)\n", "print(a)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Arrays de dos dimensiones" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([[0, 1, 2],\n", " [3, 4, 5],\n", " [6, 7, 8]])" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "arr = np.arange(9).reshape([3, 3])\n", "arr" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "2" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "arr[0, -1]" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "8" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "arr[2, 2]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Secciones de arrays" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Hasta ahora hemos visto cómo acceder a elementos aislados del array, pero la potencia de NumPy está en poder acceder a secciones enteras. Para ello se usa la sintaxis `inicio:final:paso`: si alguno de estos valores no se pone toma un valor por defecto. Veamos ejemplos:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([[ 0., 1., 2., 3., 4., 5., 6., 7., 8.],\n", " [ 9., 10., 11., 12., 13., 14., 15., 16., 17.],\n", " [ 18., 19., 20., 21., 22., 23., 24., 25., 26.],\n", " [ 27., 28., 29., 30., 31., 32., 33., 34., 35.]])" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "M = np.arange(36, dtype=float).reshape(4, 9)\n", "M" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([[ 9., 10., 11., 12., 13., 14., 15., 16., 17.],\n", " [ 18., 19., 20., 21., 22., 23., 24., 25., 26.]])" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# De la segunda a la tercera fila, incluida\n", "M[1:3]" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([[ 1., 3.],\n", " [ 10., 12.]])" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Hasta la tercera fila sin incluir y de la segunda a la quinta columnas saltando dos\n", "M[:2, 1:5:2]\n", "#M[1:2:1, 1:5:2] # Equivalente" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Ejercicio" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Pintar un tablero de ajedrez usando la función `plt.matshow`." ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([[0, 1, 0, 1, 0, 1, 0, 1],\n", " [1, 0, 1, 0, 1, 0, 1, 0],\n", " [0, 1, 0, 1, 0, 1, 0, 1],\n", " [1, 0, 1, 0, 1, 0, 1, 0],\n", " [0, 1, 0, 1, 0, 1, 0, 1],\n", " [1, 0, 1, 0, 1, 0, 1, 0],\n", " [0, 1, 0, 1, 0, 1, 0, 1],\n", " [1, 0, 1, 0, 1, 0, 1, 0]])" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tablero = np.zeros([8, 8], dtype=int)\n", "\n", "tablero[0::2, 1::2] = 1\n", "tablero[1::2, 0::2] = 1\n", "\n", "tablero" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAVgAAAFdCAYAAABGoXXzAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAElJJREFUeJzt3W+MpWV5x/HvBSWiaIdEWqwVqxSlazDoDP6rRVpBMCSC\nNA16JDZks5pFX5BpmyixhrYvjKmRIaJrmta6yOo0vKgRUxEE2lpAumFG11IWmyj/amGVxY4GpF3Y\nqy/OmXR23D/znHmuec45fD/JSTjPnDPPj3tmf/PMfc7cd2QmkqT2HdV1AEmaVBasJBWxYCWpiAUr\nSUUsWEkqYsFKUhELVpKKWLCSVMSClaQiFqwkFRmbgo2ID0bE/RHx84i4KyJe13UmgIg4MyJuiIgf\nRsT+iLig60wAEXFFROyMiJ9GxJ6I+HJEvLLrXAARsTUidkXE0uB2Z0S8vetcq0XEhwdf06tGIMuV\ngywrb/d2nWtZRLw4Iq6LiMci4snB13d6BHLdf5Bx2x8R12zE+ceiYCPiXcAngSuB1wK7gJsi4oRO\ng/UdB3wH+AAwSgs7nAlcA7wBOAc4Brg5Ip7baaq+h4EPAdPADHAb8JWI2NRpqhUGP8DfT/97bVTc\nA5wIvGhw+51u4/RFxPHAHcD/AOcBm4A/Bn7SZa6BM/j/8XoR8Db6/06v34iTxzgs9hIRdwH/mpmX\nD+4H/X+kn8rMv+w03AoRsR94Z2be0HWW1QY/jH4EvCUzb+86z2oRsRf4k8z8/AhkeT6wAFwGfBT4\ndmb+UceZrgQuzMzOrwpXi4iPA2/KzLO6znIkEXE1cH5mbshvcyN/BRsRx9C/yrl1+Vj2fyrcAryp\nq1xj6Hj6P7kf7zrIShFxVES8G3ge8K2u8wx8BvhqZt7WdZBVXjGYivp+ROyIiJO6DjTwDuDuiLh+\nMB21GBFbug612qBLLgE+t1HnHPmCBU4Ajgb2rDq+h/4lv45gcMV/NXB7Zo7EvF1EnBYRP6P/a+U2\n4KLMvK/jWAzK/jXAFV1nWeUu4FL6v4JvBV4OfDMijusy1MDJ9K/2vwecC3wW+FREvLfTVL/oImAK\nuHajTvhLG3UidWob8CrgzV0HWeE+4HT63/B/AHwhIt7SZclGxEvo/yA6JzP3dZXjYDLzphV374mI\nncCDwMVA19MqRwE7M/Ojg/u7IuI0+j8Irusu1i/YDNyYmY9u1AnH4Qr2MeAZ+pP7K50IbNhAjauI\n+DRwPvC7mflI13mWZebTmfmDzPx2Zn6E/otJl3ccawb4FWAxIvZFxD7gLODyiPjfwW8CIyEzl4D/\nAE7pOgvwCLB71bHdwEs7yHJQEfFS+i/2/vVGnnfkC3ZwJbEAnL18bPCNfjZwZ1e5xsGgXC8Efi8z\nH+o6zxEcBTyn4wy3AK+mP0Vw+uB2N7ADOD1H6BXhwQtxp9Avt67dAZy66tip9K+wR8Vm+tOKX9vI\nk47LFMFVwPaIWAB2ArP0XxTZ3mUogMEc2CnA8tXNyRFxOvB4Zj7cYa5tQA+4AHgiIpZ/A1jKzKe6\nygUQER8DbgQeAl5A/4WHs+jP33UmM58ADpijjogngL2ZufoKbUNFxCeAr9IvrV8H/hzYB8x3mWtg\nDrgjIq6g//anNwBbgPd1mmpgcEF2KbA9M/dv6Mkzcyxu9N9n+gDwc/qvNp/RdaZBrrOA/fSnMVbe\n/rbjXAfL9AzwhyMwZn8D/GDwtXwUuBl4a9e5DpH1NuCqEcgxD/znYMweAr4EvLzrXCvynQ98F3gS\n+Hdgc9eZVmR72+B7/5SNPvdYvA9WksbRyM/BStK4smAlqYgFK0lFLFhJKmLBSlIRC1aSipT+oUFE\nvJD+4hQPAJ2+uV2SWnIs8DLgpszce7gHVv8l13nAF4vPIUlduIT+H3wcUnXBPgCwY8cONm1qZ7H6\n2dlZ5ubmWvlcMzMzrXyeCgsLC619rjbHDEZ33NocM/B7bRjPlu+1gQeO9IDqgn0KYNOmTUxPt7MQ\n+9TUVGufa5S1+f/omA3HcWvu2TJmA0ec9vRFLkkqYsFKUhELVpKKjF3B9nq9riOMHcdsOI5bc47Z\ngUqXK4yIaWBhYWFhJCe+R2gHkF8wystIjuq4OWbDcdyGNpOZi4d7wNhdwUrSuLBgJamIBStJRSxY\nSSpiwUpSEQtWkooMVbAR8cGIuD8ifh4Rd0XE69oOJknjrnHBRsS7gE8CVwKvBXYBN0XECS1nk6Sx\nNswV7CzwV5n5hcy8D9gKPAlsbjWZJI25RgUbEccAM8Cty8ey/2cgtwBvajeaJI23plewJwBHA3tW\nHd8DvKiVRJI0IaoX3Ab6q5xPTU0dcKzX67kwhKSJ1rRgHwOeAU5cdfxE4NFDPWlubm4kF3uRpEqN\npggycx+wAJy9fCz6y92cDdzZbjRJGm/DTBFcBWyPiAVgJ/13FTwP2N5iLkkae40LNjOvH7zn9S/o\nTw18BzgvM3/cdjhJGmdDvciVmduAbS1nkaSJ4loEklTEgpWkIhasJBWxYCWpiAUrSUUsWEkqYsFK\nUhELVpKKWLCSVMSClaQiFqwkFbFgJamIBStJRTZky5iZmZmNOE1j/f0aR1N/HfPRNKrj5pgNx3Fr\nZnFxcc2d5hWsJBWxYCWpiAUrSUUsWEkqYsFKUhELVpKKWLCSVMSClaQiFqwkFbFgJamIBStJRSxY\nSSpiwUpSEQtWkoo0LtiIODMiboiIH0bE/oi4oCKYJI27Ya5gjwO+A3wAGL3FGiVpRDRecDszvw58\nHSBGeaVeSeqYc7CSVMSClaQiG7InlySNo/n5eebn5w84trS0tObnx3o2FYuI/cA7M/OGQ3x8GlgY\n+gTFRnFDtWWjPL09quPmmA3HcWtmxaaHM5m5eLjHOkUgSUUaTxFExHHAKcDyj72TI+J04PHMfLjN\ncJI0zoaZgz0D+Ef674FN4JOD49cCm1vKJUljb5j3wf4zTi1I0hFZlJJUxIKVpCIWrCQVsWAlqYgF\nK0lFLFhJKmLBSlIRC1aSiliwklTEgpWkIhasJBWxYCWpiAUrSUU2ZMuYhYUFpqenN+JUjbiS+3BG\nddwcs+E4bnW8gpWkIhasJBWxYCWpiAUrSUUsWEkqYsFKUhELVpKKWLCSVMSClaQiFqwkFbFgJamI\nBStJRSxYSSrSqGAj4oqI2BkRP42IPRHx5Yh4ZVU4SRpnTa9gzwSuAd4AnAMcA9wcEc9tO5gkjbtG\n68Fm5vkr70fEpcCPgBng9vZiSdL4W+8c7PFAAo+3kEWSJsrQBRv9pcavBm7PzHvbiyRJk2E9W8Zs\nA14FvLmlLJI0UYYq2Ij4NHA+cGZmPnKkx8/OzjI1NXXAsV6vR6/XG+b0kjQWGhfsoFwvBM7KzIfW\n8py5ubmR3PRQkio1KtiI2Ab0gAuAJyLixMGHljLzqbbDSdI4a/oi11bgl4F/Av5rxe3idmNJ0vhr\n+j5Y/7RWktbIwpSkIhasJBWxYCWpiAUrSUUsWEkqYsFKUhELVpKKWLCSVMSClaQiFqwkFbFgJamI\nBStJRSxYSSpiwUpSkfXsybVmMzMzG3GaxjKz6wiH1N9TcjSN6rg5ZsNx3JpZXFxcc6d5BStJRSxY\nSSpiwUpSEQtWkopYsJJUxIKVpCIWrCQVsWAlqYgFK0lFLFhJKmLBSlIRC1aSiliwklSkUcFGxNaI\n2BURS4PbnRHx9qpwkjTOml7BPgx8CJgGZoDbgK9ExKa2g0nSuGu0Hmxm/sOqQ38aEZcBbwR2t5ZK\nkibA0AtuR8RRwMXA84BvtZZIkiZE44KNiNPoF+qxwM+AizLzvraDSdK4G+ZdBPcBpwOvBz4LfCEi\nfqvVVJI0ARpfwWbm08APBne/HRGvBy4HLmszmCR1bX5+nvn5+QOOLS0trfn5sd5NxSLiVuDBzNx8\nkI9NAwvrOkGhUdxQbZkb0TXnmA3HcWtmxaaHM5m5eLjHNrqCjYiPATcCDwEvAC4BzgLOHS6qJE2u\nplMEvwpcC/wasAR8Fzg3M29rO5gkjbum74PdUhVEkiaNaxFIUhELVpKKWLCSVMSClaQiFqwkFbFg\nJamIBStJRSxYSSpiwUpSEQtWkopYsJJUxIKVpCIWrCQVsWAlqcjQu8o2sbCwwPT09EacqhFXch/O\nqI6bYzYcx62OV7CSVMSClaQiFqwkFbFgJamIBStJRSxYSSpiwUpSEQtWkopYsJJUxIKVpCIWrCQV\nsWAlqYgFK0lF1lWwEfHhiNgfEVe1FUiSJsXQBRsRrwPeD+xqL44kTY6hCjYing/sALYA/91qIkma\nEMNewX4G+Gpm3tZmGEmaJI13NIiIdwOvAc5oP44kTY5GBRsRLwGuBs7JzH1rfd7s7CxTU1MHHOv1\nevR6vSanl6SxEk3244mIC4G/B54BljfLORrIwbHn5IpPGBHTwIJ7cjXnPknNOWbDcdyGNpOZi4d7\nQNMpgluAV686th3YDXw8R/krJUkbrFHBZuYTwL0rj0XEE8DezNzdZjBJGndt/CWXV62SdBCN30Ww\nWma+tY0gkjRpXItAkopYsJJUxIKVpCIWrCQVsWAlqYgFK0lFLFhJKmLBSlIRC1aSiliwklTEgpWk\nIhasJBWxYCWpyLpX01qLmZmZjThNY6O8Pvgor+Q+quPmmA3HcWtmcXFxzZ3mFawkFbFgJamIBStJ\nRSxYSSpiwUpSEQtWkopYsJJUxIKVpCIWrCQVsWAlqYgFK0lFLFhJKmLBSlIRC1aSijQq2Ii4MiL2\nr7rdWxVOksbZMOvB3gOcDSwvIvl0e3EkaXIMU7BPZ+aPW08iSRNmmDnYV0TEDyPi+xGxIyJOaj2V\nJE2ApgV7F3ApcB6wFXg58M2IOK7lXJI09hpNEWTmTSvu3hMRO4EHgYuBz7cZTJK6Nj8/z/z8/AHH\nlpaW1vz8WO+mYoOS/UZmfuQgH5sGFtZ1gkKjuKHaMjeia84xG47j1syKTQ9nMnPxcI9d1/tgI+L5\nwCnAI+v5PJI0iZq+D/YTEfGWiPiNiPht4MvAPmD+CE+VpGedpm/TegnwJeCFwI+B24E3ZubetoNJ\n0rhr+iJXryqIJE0a1yKQpCIWrCQVsWAlqYgFK0lFLFhJKmLBSlIRC1aSiliwklTEgpWkIhasJBWx\nYCWpiAUrSUUsWEkqMsyuso0tLCwwPT29EadqxJXchzOq4+aYDcdxq+MVrCQVsWAlqYgFK0lFLFhJ\nKmLBSlIRC1aSiliwklTEgpWkIhasJBWxYCWpiAUrSUUsWEkqYsFKUpHGBRsRL46I6yLisYh4MiJ2\nRcToLZUlSR1rtFxhRBwP3AHcCpwHPAa8AvhJ+9Ekabw1XQ/2w8BDmbllxbEHW8wjSROj6RTBO4C7\nI+L6iNgTEYsRseWIz5KkZ6GmBXsycBnwPeBc4LPApyLivW0Hk6Rx13SK4ChgZ2Z+dHB/V0ScBmwF\nrms1mSSNuaYF+wiwe9Wx3cDvH+5Js7OzTE1NHXCs1+vR6/Uanl6SxkfTgr0DOHXVsVM5wgtdc3Nz\nI7npoSRVajoHOwe8MSKuiIjfjIj3AFuAT7cfTZLGW6OCzcy7gYuAHvBvwEeAyzPz7wqySdJYazpF\nQGZ+DfhaQRZJmiiuRSBJRSxYSSpiwUpSEQtWkopYsJJUxIKVpCIWrCQVsWAlqYgFK0lFLFhJKmLB\nSlIRC1aSiliwklTEgpWkIo2XKxzGzMzMRpymsczsOsIhRUTXEQ5pVMfNMRuO49bM4uLimjvNK1hJ\nKmLBSlIRC1aSiliwklTEgpWkIhasJBWxYCWpiAUrSUUsWEkqYsFKUhELVpKKWLCSVMSClaQijQo2\nIu6PiP0HuV1TFVCSxlXT5QrPAI5ecf/VwM3A9a0lkqQJ0ahgM3PvyvsR8Q7g+5n5L62mkqQJMPQc\nbEQcA1wCfK69OJI0OdbzItdFwBRwbUtZJGmirKdgNwM3ZuajbYWRpEky1J5cEfFS4Bzgne3GkaTR\nMT8/z/z8/AHHlpaW1vz8GGZTsYj4M+B9wEmZuf8wj5sGFhqfYIOM4oZqy9yIrjnHbDiOWzMrNj2c\nyczFwz228RRB9L8alwLbD1eukvRsN8wc7DnAScDnW84iSROl8RxsZn6DA//YQJJ0EK5FIElFLFhJ\nKmLBSlIRC1aSiliwklTEgpWkIhasJBWxYCWpiAXbotWLQujIHLPhOG7NdTFmFmyL/KZvzjEbjuPW\nnAUrSRPEgpWkIhasJBUZakeDBo4t/vzrsrh42LVyG1taWmr9c46iNv8fHbPhOG7NtTVmu3fvXv7P\nI/bbUDsarFVEvAf4YtkJJKk7l2Tmlw73gOqCfSFwHvAA8FTZiSRp4xwLvAy4KTP3Hu6BpQUrSc9m\nvsglSUUsWEkqYsFKUhELVpKKWLCSVMSClaQiFqwkFfk/EZ2t89290AgAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "\n", "plt.matshow(tablero, cmap=plt.cm.gray_r)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "___Hemos aprendido:___\n", "\n", "* A acceder a elementos de un array\n", "* Que las secciones no devuelven copias, sino vistas\n", "\n", "__¡Quiero más!__Algunos enlaces:\n", "\n", "Algunos enlaces en Pybonacci:\n", "\n", "* [Cómo crear matrices en Python con NumPy](http://pybonacci.wordpress.com/2012/06/11/como-crear-matrices-en-python-con-numpy/).\n", "* [Números aleatorios en Python con NumPy y SciPy](http://pybonacci.wordpress.com/2013/01/11/numeros-aleatorios-en-python-con-numpy-y-scipy/).\n", "\n", "\n", "Algunos enlaces en otros sitios:\n", "\n", "* [100 numpy exercises](http://www.labri.fr/perso/nrougier/teaching/numpy.100/index.html). Es posible que de momento sólo sepas hacer los primeros, pero tranquilo, pronto sabrás más...\n", "* [NumPy and IPython SciPy 2013 Tutorial](http://conference.scipy.org/scipy2013/tutorial_detail.php?id=100).\n", "* [NumPy and SciPy documentation](http://docs.scipy.org/doc/)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "
\n", "####

¡Síguenos en Twitter!\n", "
\n", "###### Follow @AeroPython \n", "
\n", "###### Este notebook ha sido realizado por: Juan Luis Cano y Álex Sáez \n", "
\n", "##### \"Licencia
Curso AeroPython por Juan Luis Cano Rodriguez y Alejandro Sáez Mollejo se distribuye bajo una Licencia Creative Commons Atribución 4.0 Internacional." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "_Las siguientes celdas contienen configuración del Notebook_\n", "\n", "_Para visualizar y utlizar los enlaces a Twitter el notebook debe ejecutarse como [seguro](http://ipython.org/ipython-doc/dev/notebook/security.html)_\n", "\n", " File > Trusted Notebook" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "/* This template is inspired in the one used by Lorena Barba\n", "in the numerical-mooc repository: https://github.com/numerical-mooc/numerical-mooc\n", "We thank her work and hope you also enjoy the look of the notobooks with this style */\n", "\n", "\n", "\n", "El estilo se ha aplicado =)\n", "\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Esta celda da el estilo al notebook\n", "from IPython.core.display import HTML\n", "css_file = '../styles/aeropython.css'\n", "HTML(open(css_file, \"r\").read())" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python [default]", "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.5.2" } }, "nbformat": 4, "nbformat_minor": 0 }