Commit 0d89fe89 authored by Steve Tjoa's avatar Steve Tjoa

getting good at ipython

parent 0cfdf1e3
This source diff could not be displayed because it is too large. You can view the blob instead.
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true,
"slideshow": {
"slide_type": "skip"
}
},
"outputs": [],
"source": [
"import numpy, scipy, matplotlib.pyplot as plt, pandas, librosa"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "skip"
}
},
"source": [
"[← Back to Index](index.html)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"Getting Good at IPython\n",
"======================="
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "notes"
}
},
"source": [
"You are looking at an **IPython Notebook**, an interactive Python shell inside of a web browser. With it, you can run individual Python commands and immediately view their output. It's basically the Matlab Desktop or Mathematica Notebook for Python.\n",
"\n",
"First, we recommend that you take the *User Interface Tour* in the Help Menu above."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Cells"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "notes"
}
},
"source": [
"An IPython Notebook is comprised of **cells**. Cells are just small units of code or text. For example, the text that you are reading is inside a *Markdown* cell. (More on that later.)\n",
"\n",
"*Code* cells allow you to edit, execute, and analyze small portions of Python code at a time. Here is a code cell:"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false,
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"data": {
"text/plain": [
"3"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"1+2"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Modes"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "notes"
}
},
"source": [
"The IPython Notebook has two different keyboard input modes. \n",
"\n",
"In **Edit Mode**, you type code/text into a cell. Edit Mode is indicated by a *green* cell border. \n",
"\n",
"To enter Edit Mode from Command Mode, press `Enter`. You can also double-click on a cell.\n",
"\n",
"To execute the code inside of a cell and move to the next cell, press **`Shift-Enter`**. (`Ctrl-Enter` will run the current cell without moving to the next cell. This is useful for rapidly tweaking the current cell.)\n",
"\n",
"In **Command Mode**, you can perform notebook level actions such as navigating among cells, selecting cells, moving cells, saving notebooks, displaying help. Command Mode is indicated by a *grey* cell border. \n",
"\n",
"To enter Command Mode from Edit Mode, press **`Esc`**. Other commands can also enter Command Mode, e.g. `Shift-Enter`.\n",
"\n",
"To display the Help Menu from Command Mode, press **`h`**. *Use it often*; `h` is your best friend."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Saving"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "notes"
}
},
"source": [
"Your code goes directly into an IPython notebook. To save your changes, click on the \"Save\" icon in the menu bar, or type **`s`** in command mode.\n",
"\n",
"If this notebook is in a Git repo, use `git checkout -- <file>` to revert a saved edit."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Writing Text in Markdown"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "notes"
}
},
"source": [
"Markdown is simply a fancy way of formatting plain text. It is a markup language that is a superset of HTML. The Markdown specification is found here: http://daringfireball.net/projects/markdown/basics/"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "notes"
}
},
"source": [
"A cell may contain Python code or Markdown code. To convert any Python cell to a markdown cell, press **`m`**."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "notes"
}
},
"source": [
"For headings, we recommend that you use IPython's keyboard shortcuts. To change the text in a cell to a level-3 header, simply press `3`. For similar commands, press **`h`** to view the Help menu."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Writing Text in $\\LaTeX$"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "notes"
}
},
"source": [
"In a Markdown cell, you can also use $\\LaTeX$ syntax. Example input:"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
" $$ \\max_{||w||=1} \\sum_{i=1}^{N} \\big| \\langle w, x_i - m \\rangle \\big|^2 $$"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "skip"
}
},
"source": [
"Output:"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"$$ \\max_{||w||=1} \\sum_{i=1}^{N} \\big| \\langle w, x_i - m \\rangle \\big|^2 $$"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Default Imports"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "notes"
}
},
"source": [
"If you run IPython inside the [`stanford-mir` Vagrant box](https://vagrantcloud.com/stevetjoa/stanford-mir) used for this workshop, every IPython notebook will automatically have the following packages imported: "
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
" import numpy\n",
" import scipy\n",
" import pandas\n",
" import matplotlib\n",
" import matplotlib.pyplot as plt\n",
" import librosa"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "skip"
}
},
"source": [
"Example:"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false,
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x108759110>]"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nrkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x108312bd0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(scipy.hamming(101))"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "notes"
}
},
"source": [
"To learn more about automatic imports, view the IPython configuration file at `~/.ipython/profile_default/ipython_config.py`."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Tab Autocompletion"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "notes"
}
},
"source": [
"Tab autocompletion works in Command Window and the Editor. After you type a few letters, press the `Tab` key and a popup will appear and show you all of the possible completions, including variable names and functions. This prevents you from mistyping the names of variables -- a big time saver! \n",
" \n",
"For example, type `scipy.` and then press `Tab`. You should see a list of members in the Python package `scipy`.\n",
"\n",
"Or type `scipy.sin`, then press `Tab` to view members that begin with `sin`."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false,
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"data": {
"text/plain": [
"<ufunc 'sin'>"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Press Tab at the end of the following line\n",
"scipy.sin"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Inline Documentation"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "notes"
}
},
"source": [
"To get help on a certain Python object, type `?` after the object name, and run the cell:"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false,
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [],
"source": [
"# Run this cell.\n",
"int?"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "notes"
}
},
"source": [
"In addition, if you press `Shift-Tab` in a code cell, a help dialog will also appear. For example, in the cell above, place your cursor after `int`, and press `Shift-Tab`. Press `Shift-Tab` twice to expand the help dialog."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "notes"
}
},
"source": [
"## More Documentation: NumPy, SciPy, Matplotlib"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "notes"
}
},
"source": [
"In the top menu bar, click on Help, and you'll find a prepared set of documentation links for IPython, NumPy, SciPy, Matplotlib, and Pandas."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "notes"
}
},
"source": [
"## Experimenting"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "notes"
}
},
"source": [
"Code cells are meant to be interactive. We may present you with several options for experimentation, e.g. choices of variables, audio files, and algorithms. For example, if you see a cell like this, then try all of the possible options by uncommenting the desired line(s) of code. (To run the cell, select \"Cell\" and \"Run\" from the top menu, or press `Shift-Enter`.)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false,
"slideshow": {
"slide_type": "notes"
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,\n",
" 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,\n",
" 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49])"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x = scipy.arange(50)\n",
"# Try these too:\n",
"# x = scipy.randn(50)\n",
"# x = scipy.linspace(0, 1, 50, endpoint=False)\n",
"x"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "skip"
}
},
"source": [
"[&larr; Back to Index](index.html)"
]
}
],
"metadata": {
"celltoolbar": "Slideshow",
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.6"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -207,7 +207,7 @@ div#notebook {
<ol>
<li><a href="about.html">About musicinformationretrieval.com</a></li>
<li><a href="python_basics.html">Python Basics</a></li>
<li><a href="notebooks/get_good_at_ipython.ipynb">Getting Good at IPython</a></li>
<li><a href="get_good_at_ipython.html">Getting Good at IPython</a> (<a href="get_good_at_ipython.ipynb">ipynb</a>)</li>
<li><a href="ipython_audio.html">Using Audio in IPython</a> (<a href="ipython_audio.ipynb">ipynb</a>)</li>
<li><a href="numpy_basics.html">NumPy and SciPy Basics</a> (<a href="numpy_basics.ipynb">ipynb</a>)</li>
</ol>
......
......@@ -20,7 +20,7 @@
"source": [
"1. [About musicinformationretrieval.com](about.html)\n",
"1. [Python Basics](python_basics.html)\n",
"1. [Getting Good at IPython](notebooks/get_good_at_ipython.ipynb)\n",
"1. [Getting Good at IPython](get_good_at_ipython.html) ([ipynb](get_good_at_ipython.ipynb))\n",
"1. [Using Audio in IPython](ipython_audio.html) ([ipynb](ipython_audio.ipynb))\n",
"1. [NumPy and SciPy Basics](numpy_basics.html) ([ipynb](numpy_basics.ipynb))"
]
......
{
"metadata": {
"name": "",
"signature": "sha256:455ad8f0e6d498faf7dc03fb6ef6d1639d86d35b4efc383397152093059967cd"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Getting Good at IPython\n",
"======================="
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You are looking at an **IPython Notebook**, an interactive Python shell inside of a web browser. With it, you can run individual Python commands and immediately view their output. It's basically the Matlab Desktop or Mathematica Notebook for Python.\n",
"\n",
"First, we recommend that you take the *User Interface Tour* in the Help Menu above."
]
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Cells"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"An IPython Notebook is comprised of **cells**. Cells are just small units of code or text. For example, the text that you are reading is inside a *Markdown* cell. (More on that later.)\n",
"\n",
"*Code* cells allow you to edit, execute, and analyze small portions of Python code at a time. Here is a code cell:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"1+2"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 5,
"text": [
"3"
]
}
],
"prompt_number": 5
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Modes"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The IPython Notebook has two different keyboard input modes. \n",
"\n",
"In **Edit Mode**, you type code/text into a cell. Edit Mode is indicated by a *green* cell border. \n",
"\n",
"To enter Edit Mode from Command Mode, press `Enter`. You can also double-click on a cell.\n",
"\n",
"To execute the code inside of a cell and move to the next cell, press `Shift-Enter`. (`Ctrl-Enter` will run the current cell without moving to the next cell. This is useful for rapidly tweaking the current cell.)\n",
"\n",
"In **Command Mode**, you can perform notebook level actions such as navigating among cells, selecting cells, moving cells, saving notebooks, displaying help. Command Mode is indicated by a *grey* cell border. \n",
"\n",
"To enter Command Mode from Edit Mode, press `Esc`. Other commands can also enter Command Mode, e.g. `Shift-Enter`.\n",
"\n",
"To display the Help Menu from Command Mode, press `h`. Use it often; `h` is your best friend."
]
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Writing Text in Markdown"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Markdown is a markup language that is a superset of HTML. The Markdown specification is found here: http://daringfireball.net/projects/markdown/"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"A cell may contain Python code or Markdown code. To convert any Python cell to a markdown cell, press `m`."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For headings, we recommend that you use IPython's keyboard shortcuts. To change the text in a cell to a level-3 header, simply press `3`. For similar commands, press `h` to view the Help menu."
]
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Writing Text in $\\LaTeX$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In a Markdown cell, you can also use $\\LaTeX$ syntax. Example input:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" $$ \\max_{||\\textbf{w}||=1} \\sum_{i=1}^{N} \\big| \\langle \\textbf{w}, \\textbf{x}_i - \\textbf{m} \\rangle \\big|^2 $$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Output:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$ \\max_{||\\textbf{w}||=1} \\sum_{i=1}^{N} \\big| \\langle \\textbf{w}, \\textbf{x}_i - \\textbf{m} \\rangle \\big|^2 $$"
]
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Default Imports"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If you run IPython inside the [`stanford-mir` Vagrant box](https://vagrantcloud.com/stevetjoa/stanford-mir) used for this workshop, every IPython notebook will automatically have the following packages imported: `numpy`, `scipy`, `matplotlib`."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In addition, several NumPy and matplotlib functions already exist in the IPython workspace:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"print arange(5)\n",
"print randn(5)\n",
"print hamming(5)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"[0 1 2 3 4]\n",
"[ 0.57054542 1.86055336 0.36799909 0.04648987 -0.04230884]\n",
"[ 0.08 0.54 1. 0.54 0.08]\n"
]
}
],
"prompt_number": 6
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"plot(hamming(101))"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 7,
"text": [
"[<matplotlib.lines.Line2D at 0x39bc090>]"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\n",
"text": [
"<matplotlib.figure.Figure at 0x37f1690>"
]
}
],
"prompt_number": 7
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To learn more about automatic imports, view the IPython configuration file at `~/.ipython/profile_default/ipython_config.py`."
]
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Tab Autocompletion"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Tab autocompletion works in Command Window and the Editor. After you type a few letters, press the `Tab` key and a popup will appear and show you all of the possible completions, including variable names and functions. This prevents you from mistyping the names of variables -- a big time saver! \n",
" \n",
"For example, type `scipy.` and then press `Tab`. You should see a list of members in the Python package `scipy`.\n",
"\n",
"Or type `scipy.sin`, then press `Tab` to view members that begin with `sin`."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Press Tab at the end of the following line\n",
"scipy.sin"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 8,
"text": [
"<ufunc 'sin'>"
]
}
],
"prompt_number": 8
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Inline Documentation"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To get help on a certain Python object, type `?` after the object name, and run the cell:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Run this cell.\n",
"int?"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 9
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In addition, if you press `Shift-Tab` in a code cell, a help dialog will also appear. For example, in the cell above, place your cursor after `int`, and press `Shift-Tab`."
]
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"More Documentation: NumPy, SciPy, Matplotlib"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In the top menu bar, click on Help, and you'll find a prepared set of documentation links for IPython, NumPy, SciPy, and Matplotlib."
]
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Experimenting"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Code cells are meant to be interactive. We may present you with several options for experimentation, e.g. choices of variables, audio files, and algorithms. For example, if you see a cell like this, then try all of the possible options by uncommenting the desired line(s) of code. (To run the cell, select \"Cell\" and \"Run\" from the top menu, or press `Shift-Enter`.)"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"x = scipy.arange(50)\n",
"# Try these too:\n",
"# x = scipy.randn(50)\n",
"# x = scipy.linspace(0, 1, 50)\n",
"x"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 10,
"text": [
"array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,\n",
" 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,\n",
" 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49])"
]
}
],
"prompt_number": 10
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Saving"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Your code goes directly into an IPython notebook. To save your changes, click on the \"Save\" icon in the menu bar, or type `s` in command mode.\n",
"\n",
"If you want to undo a saved edit, use `git checkout -- <file>` to revert the change."
]
}
],
"metadata": {}
}
]
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment