{ "metadata": { "name": "", "signature": "sha256:110f413f066c96d456b51f2180b9f430c41341ee7065d59fb590e96c02fbb798" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Introduction \u00e0 Python et au notebook IPython (Jupyter)\n", "\n", "Bienvenue\u202f! Ceci est un *notebook* IPython. \n", "\n", "- Un *notebook* est form\u00e9 de cellules, \n", "- Chaque cellule contient du code (normalement, du Python),\n", "- En dessous de chaque cellule, son *\u00e9valuation*." ] }, { "cell_type": "code", "collapsed": false, "input": [ "1 + 3" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 1, "text": [ "4" ] } ], "prompt_number": 1 }, { "cell_type": "markdown", "metadata": {}, "source": [ "IPython (Jupyter) est un syst\u00e8me de pr\u00e9sentation de *documents scientifiques interactifs*.\n", "\n", "- Il est con\u00e7u pour melanger discussion, presentation de donn\u00e9es et calcul.\n", "- Une cellule peut aussi contenir autre chose que du Python..." ] }, { "cell_type": "code", "collapsed": false, "input": [ "%%html\n", "\n", "

Cette cellule contient du HTML\u202f!

\n", "\n", "

Remarquez la clef magique %%html.

" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "\n", "

Cette cellule contient du HTML\u202f!

\n", "\n", "

Remarquez la clef magique %%html.

" ], "metadata": {}, "output_type": "display_data", "text": [ "" ] } ], "prompt_number": 2 }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "\n", "## Utiliser IPython\n", "\n", "- Vous pouvez installer IPython sur votre machine avec la distribution Anaconda http://continuum.io/downloads.\n", "- Vous pouvez aussi l'utiliser (gratuitement) en ligne via le site https://cloud.sagemath.com/.\n", "\n", "Avec IPython sont aussi install\u00e9s\n", "\n", "- Le langage de programmation Python,\n", "- Le langage de programmation Julia,\n", "- Le syst\u00e8me de statistiques R,\n", "- ...\n", "\n", "...d'o\u00f9 Ju-Pyt-eR\u202f!\n", "\n", "Le notebook est plus facile \u00e0 utiliser si vous connaissez les raccourcis clavier. `Echap`, puis `h` pour les voir." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "-------\n", "\n", "## Syntaxe Python\n", "\n", "Les variables Python n'ont pas de *type d\u00e9clar\u00e9*, mais elles ont un *type dynamique*" ] }, { "cell_type": "code", "collapsed": false, "input": [ "a = 1\n", "a" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 3, "text": [ "1" ] } ], "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [ "type(a)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 4, "text": [ "int" ] } ], "prompt_number": 4 }, { "cell_type": "code", "collapsed": false, "input": [ "a = \"toto\"\n", "a" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 5, "text": [ "'toto'" ] } ], "prompt_number": 5 }, { "cell_type": "code", "collapsed": false, "input": [ "type(a)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 6, "text": [ "str" ] } ], "prompt_number": 6 }, { "cell_type": "markdown", "metadata": {}, "source": [ "On ne combine pas deux types diff\u00e9rents" ] }, { "cell_type": "code", "collapsed": false, "input": [ "a + 1" ], "language": "python", "metadata": {}, "outputs": [ { "ename": "TypeError", "evalue": "cannot concatenate 'str' and 'int' objects", "output_type": "pyerr", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0ma\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mTypeError\u001b[0m: cannot concatenate 'str' and 'int' objects" ] } ], "prompt_number": 7 }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "\n", "## Python est orient\u00e9 aux objets\n", "\n", "Nous n'allons pas entrer dans les d\u00e9tails des langages **orient\u00e9s aux objets**. En pratique, \n", "\n", "- Toute variable contient un **objet**,\n", "- Un objet poss\u00e8de des **m\u00e9thodes** (des fonctions qui agissent sur l'objet)." ] }, { "cell_type": "code", "collapsed": false, "input": [ "a.upper()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 8, "text": [ "'TOTO'" ] } ], "prompt_number": 8 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Dans la majorit\u00e9 des cas, les m\u00e9thodes ne modifient pas l'objet, mais en cr\u00e9ent un nouveau" ] }, { "cell_type": "code", "collapsed": false, "input": [ "b = a.upper()\n", "b" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 9, "text": [ "'TOTO'" ] } ], "prompt_number": 9 }, { "cell_type": "code", "collapsed": false, "input": [ "a" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 10, "text": [ "'toto'" ] } ], "prompt_number": 10 }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "\n", "## L'indentation et les retours \u00e0 la ligne sont syntaxiques\u202f!\n", "\n", "Vous n'avez pas droit de laisser de l'espace blanc \u00e0 gauche du code sans raison" ] }, { "cell_type": "code", "collapsed": false, "input": [ "a = 1\n", " b = 2" ], "language": "python", "metadata": {}, "outputs": [ { "ename": "IndentationError", "evalue": "unexpected indent (, line 2)", "output_type": "pyerr", "traceback": [ "\u001b[0;36m File \u001b[0;32m\"\"\u001b[0;36m, line \u001b[0;32m2\u001b[0m\n\u001b[0;31m b = 2\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mIndentationError\u001b[0m\u001b[0;31m:\u001b[0m unexpected indent\n" ] } ], "prompt_number": 11 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Vous n'avez pas droit de couper une ligne" ] }, { "cell_type": "code", "collapsed": false, "input": [ "a = \n", "2" ], "language": "python", "metadata": {}, "outputs": [ { "ename": "SyntaxError", "evalue": "invalid syntax (, line 1)", "output_type": "pyerr", "traceback": [ "\u001b[0;36m File \u001b[0;32m\"\"\u001b[0;36m, line \u001b[0;32m1\u001b[0m\n\u001b[0;31m a =\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid syntax\n" ] } ], "prompt_number": 12 }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "\n", "## Types de donn\u00e9es\n", "\n", "### Chaines de caract\u00e8res" ] }, { "cell_type": "code", "collapsed": false, "input": [ "a = \"toto\"" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 13 }, { "cell_type": "code", "collapsed": false, "input": [ "a == 'toto'" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 14, "text": [ "True" ] } ], "prompt_number": 14 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Il n'y a pas d'\u00e9quivalent de `char`" ] }, { "cell_type": "code", "collapsed": false, "input": [ "a[1]" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 15, "text": [ "'o'" ] } ], "prompt_number": 15 }, { "cell_type": "code", "collapsed": false, "input": [ "type(a[1])" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 16, "text": [ "str" ] } ], "prompt_number": 16 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Cha\u00eenes sur plusieurs lignes" ] }, { "cell_type": "code", "collapsed": false, "input": [ "a = \"tot\n", "o\"" ], "language": "python", "metadata": {}, "outputs": [ { "ename": "SyntaxError", "evalue": "EOL while scanning string literal (, line 1)", "output_type": "pyerr", "traceback": [ "\u001b[0;36m File \u001b[0;32m\"\"\u001b[0;36m, line \u001b[0;32m1\u001b[0m\n\u001b[0;31m a = \"tot\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m EOL while scanning string literal\n" ] } ], "prompt_number": 17 }, { "cell_type": "code", "collapsed": false, "input": [ "a = \"\"\"\n", "Mignonne, allons voir si la rose\n", "Qui ce matin avoit desclose\n", "Sa robe de pourpre au Soleil,\n", "\"\"\"" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 18 }, { "cell_type": "code", "collapsed": false, "input": [ "a" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 19, "text": [ "'\\nMignonne, allons voir si la rose\\nQui ce matin avoit desclose\\nSa robe de pourpre au Soleil,\\n'" ] } ], "prompt_number": 19 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Instruction `print` pour afficher le texte" ] }, { "cell_type": "code", "collapsed": false, "input": [ "print a" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "\n", "Mignonne, allons voir si la rose\n", "Qui ce matin avoit desclose\n", "Sa robe de pourpre au Soleil,\n", "\n" ] } ], "prompt_number": 20 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Remplacement de valeurs (\u00e0 la `printf`)" ] }, { "cell_type": "code", "collapsed": false, "input": [ "\"La reponse est %d\" % 42" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 21, "text": [ "'La reponse est 42'" ] } ], "prompt_number": 21 }, { "cell_type": "code", "collapsed": false, "input": [ "\"La %s est %d\" % (\"question\", 24)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 22, "text": [ "'La question est 24'" ] } ], "prompt_number": 22 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Nombres" ] }, { "cell_type": "code", "collapsed": false, "input": [ "a = 1" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 23 }, { "cell_type": "code", "collapsed": false, "input": [ "a == 1.0" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 24, "text": [ "True" ] } ], "prompt_number": 24 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Les nombres ont pr\u00e9cision arbitraire (pas d'overflow comme en C)\n", "\n", "Le `L` \u00e0 la fin indique un nombre **long**" ] }, { "cell_type": "code", "collapsed": false, "input": [ "a = 1000000\n", "a * a * a * a * a * a" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 25, "text": [ "1000000000000000000000000000000000000L" ] } ], "prompt_number": 25 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Op\u00e9rateur puissance" ] }, { "cell_type": "code", "collapsed": false, "input": [ "a**6" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 26, "text": [ "1000000000000000000000000000000000000L" ] } ], "prompt_number": 26 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Bol\u00e9ens" ] }, { "cell_type": "code", "collapsed": false, "input": [ "True == (not False)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 27, "text": [ "True" ] } ], "prompt_number": 27 }, { "cell_type": "code", "collapsed": false, "input": [ "True and False" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 28, "text": [ "False" ] } ], "prompt_number": 28 }, { "cell_type": "code", "collapsed": false, "input": [ "True or False" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 29, "text": [ "True" ] } ], "prompt_number": 29 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Listes" ] }, { "cell_type": "code", "collapsed": false, "input": [ "a = [\"a\", \"b\", \"c\"]" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 30 }, { "cell_type": "code", "collapsed": false, "input": [ "a[1]" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 31, "text": [ "'b'" ] } ], "prompt_number": 31 }, { "cell_type": "code", "collapsed": false, "input": [ "len(a)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 32, "text": [ "3" ] } ], "prompt_number": 32 }, { "cell_type": "code", "collapsed": false, "input": [ "a[2] = \"d\"\n", "a" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 33, "text": [ "['a', 'b', 'd']" ] } ], "prompt_number": 33 }, { "cell_type": "code", "collapsed": false, "input": [ "a[3]" ], "language": "python", "metadata": {}, "outputs": [ { "ename": "IndexError", "evalue": "list index out of range", "output_type": "pyerr", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mIndexError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0ma\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m3\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mIndexError\u001b[0m: list index out of range" ] } ], "prompt_number": 34 }, { "cell_type": "code", "collapsed": false, "input": [ "a[3] = \"e\"" ], "language": "python", "metadata": {}, "outputs": [ { "ename": "IndexError", "evalue": "list assignment index out of range", "output_type": "pyerr", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mIndexError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0ma\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m3\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m\"e\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mIndexError\u001b[0m: list assignment index out of range" ] } ], "prompt_number": 35 }, { "cell_type": "code", "collapsed": false, "input": [ "a.append(\"e\")\n", "a" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 36, "text": [ "['a', 'b', 'd', 'e']" ] } ], "prompt_number": 36 }, { "cell_type": "code", "collapsed": false, "input": [ "\" ~~=> \".join(a)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 37, "text": [ "'a ~~=> b ~~=> d ~~=> e'" ] } ], "prompt_number": 37 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Dictionnaires" ] }, { "cell_type": "code", "collapsed": false, "input": [ "a = { \"couleur\": \"rouge\", \"forme\": \"rond\"}\n", "a" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 38, "text": [ "{'couleur': 'rouge', 'forme': 'rond'}" ] } ], "prompt_number": 38 }, { "cell_type": "code", "collapsed": false, "input": [ "len(a)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 39, "text": [ "2" ] } ], "prompt_number": 39 }, { "cell_type": "code", "collapsed": false, "input": [ "a[\"couleur\"]" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 40, "text": [ "'rouge'" ] } ], "prompt_number": 40 }, { "cell_type": "code", "collapsed": false, "input": [ "a[\"taille\"] = \"grand\"\n", "a" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 41, "text": [ "{'couleur': 'rouge', 'forme': 'rond', 'taille': 'grand'}" ] } ], "prompt_number": 41 }, { "cell_type": "markdown", "metadata": {}, "source": [ "----\n", "\n", "## Contr\u00f4le\n", "\n", "L'indentation est importante\u202f!\n", "\n", "### Bloc `if`" ] }, { "cell_type": "code", "collapsed": false, "input": [ "if 1 + 1 == 2 and 1 - 1 > 0:\n", " a = 10\n", " print \"faux\"\n", "elif 3 + 4 == 7:\n", " a = 3\n", " print \"yes\"\n", "else:\n", " a = 4\n", " print \"no\"\n", " \n", "a" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "yes\n" ] }, { "metadata": {}, "output_type": "pyout", "prompt_number": 42, "text": [ "3" ] } ], "prompt_number": 42 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Bloc `while`" ] }, { "cell_type": "code", "collapsed": false, "input": [ "i = 0\n", "while i < 10:\n", " print i\n", " i += 1" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "0\n", "1\n", "2\n", "3\n", "4\n", "5\n", "6\n", "7\n", "8\n", "9\n" ] } ], "prompt_number": 43 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Bloc `for` (tr\u00e8s diff\u00e9rent du C)" ] }, { "cell_type": "code", "collapsed": false, "input": [ "a = [\"a\", \"b\", \"c\"]\n", "\n", "for x in a:\n", " print x" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "a\n", "b\n", "c\n" ] } ], "prompt_number": 44 }, { "cell_type": "markdown", "metadata": {}, "source": [ "fonction `range` pour obtenir une liste de nombres" ] }, { "cell_type": "code", "collapsed": false, "input": [ "range(10)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 45, "text": [ "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]" ] } ], "prompt_number": 45 }, { "cell_type": "code", "collapsed": false, "input": [ "for i in range(10):\n", " print i" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "0\n", "1\n", "2\n", "3\n", "4\n", "5\n", "6\n", "7\n", "8\n", "9\n" ] } ], "prompt_number": 46 }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "\n", "## Fonctions\n", "\n", "d\u00e9clar\u00e9es par le mot clef `def`" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def ma_fonction(x, y):\n", " c = 2*x\n", " return c + y\n", "\n", "ma_fonction(2, 3)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 47, "text": [ "7" ] } ], "prompt_number": 47 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Arguments par d\u00e9faut" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def fct(x, y=3, z=10):\n", " return x + y + z\n", "\n", "fct(2), fct(2, 4), fct(2, 4, 1), fct(2, z=3)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 48, "text": [ "(15, 16, 7, 8)" ] } ], "prompt_number": 48 }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "\n", "## Importer des fonctionnalit\u00e9s" ] }, { "cell_type": "code", "collapsed": false, "input": [ "import numpy\n", "from pylab import imshow, show\n", "from timeit import default_timer as timer" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 49 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Et maintenant commence la f\u00eate\u202f!" ] }, { "cell_type": "code", "collapsed": false, "input": [ "%pylab inline\n", "\n", "def mandel(x, y, max_iters):\n", " \"\"\"\n", " Given the real and imaginary parts of a complex number,\n", " determine if it is a candidate for membership in the Mandelbrot\n", " set given a fixed number of iterations.\n", " \"\"\"\n", " c = complex(x, y)\n", " z = 0.0j\n", " for i in range(max_iters):\n", " z = z*z + c\n", " if (z.real*z.real + z.imag*z.imag) >= 4:\n", " return i\n", "\n", " return max_iters\n", "\n", "\n", "\n", "def create_fractal(min_x, max_x, min_y, max_y, image, iters):\n", " height = image.shape[0]\n", " width = image.shape[1]\n", "\n", " pixel_size_x = (max_x - min_x) / width\n", " pixel_size_y = (max_y - min_y) / height\n", " \n", " for x in range(width):\n", " real = min_x + x * pixel_size_x\n", " for y in range(height):\n", " imag = min_y + y * pixel_size_y\n", " color = mandel(real, imag, iters)\n", " image[y, x] = color\n", "\n", "image = numpy.zeros((1024, 1536), dtype = numpy.uint8)\n", "start = timer()\n", "create_fractal(-2.0, 1.0, -1.0, 1.0, image, 20) \n", "dt = timer() - start\n", "\n", "print \"Mandelbrot created in %f s\" % dt\n", "imshow(image)\n", "show()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Populating the interactive namespace from numpy and matplotlib\n", "Mandelbrot created in 8.127823 s" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n5WUAawAAAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 51 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] } ], "metadata": {} } ] }