User Tools

Site Tools


python_getting_started

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

python_getting_started [2013/08/14 11:34]
asa
python_getting_started [2016/08/02 14:47]
Line 1: Line 1:
  
-===== A bit of Python ===== 
- 
-Python is available on any Linux/Unix machine including department machines and Macs. 
- 
-You can download and install python on your own computer by following 
-instructions at [[http://​www.python.org]] 
- 
-You can use the Python interpreter interactively by typing //python// at a terminal window. 
-Ipython is a nicer front end to python that is invoked with 
-  ipython 
-To quit, type control-d 
- 
-To run python code in a file //​code.py//,​ either type 
-  run code.py 
-in //​ipython//,​ or type 
-  python code.py 
-at the unix command line. 
- 
-When in //​ipython//,​ you may type python statements or expressions 
-that are evaluated, or //ipython// commands. ​ See the 
-[[http://​showmedo.com/​videotutorials/​video?​name=1000010&​fromSeriesID=100|Video 
-tutorial on using ipython]], in five parts by Jeff Rush, for help 
-getting started with //​ipython//​. 
- 
-Documentation is immediately available for many things. ​ For example: 
-<​code>​ 
-> ipython 
-asa:~$ ipython ​ 
-Python 2.7.3 (v2.7.3:​70274d53c1dd,​ Apr  9 2012, 20:​52:​43) ​ 
-Type "​copyright",​ "​credits"​ or "​license"​ for more information. 
- 
-IPython 0.13.2 -- An enhanced Interactive Python. 
-?         -> Introduction and overview of IPython'​s features. 
-%quickref -> Quick reference. 
-help      -> Python'​s own help system. 
-object? ​  -> Details about '​object',​ use '​object??'​ for extra details. 
- 
-In [1]: list? 
-Type: type 
-Base Class:​ <​type '​type'>​ 
-String Form:​ <​type '​list'>​ 
-Namespace:​ Python builtin 
-Docstring: 
-    list() -> new list 
-    list(sequence) -> new list initialized from sequence'​s items 
- 
-In [2]: help(list) 
-Help on class list in module __builtin__:​ 
- 
-class list(object) 
- ​| ​ list() -> new list 
- ​| ​ list(sequence) -> new list initialized from sequence'​s items 
- ​|  ​ 
- ​| ​ Methods defined here: 
-   . 
-   . 
-   . 
- ​| ​ append(...) 
- ​| ​     L.append(object) -- append object to end 
- ​|  ​ 
-   . 
-   . 
-   . 
- ​|  ​ 
- ​| ​ sort(...) 
- ​| ​     L.sort(cmp=None,​ key=None, reverse=False) -- stable sort *IN PLACE*; 
- ​| ​     cmp(x, y) -> -1, 0, 1 
-</​code>​ 
- 
-What is the value of $(100\cdot 2 - 12^2) / 7 \cdot 5 + 2\;\;\;$? 
-<code python> 
-  In [301]: (100*2 - 12**2) / 7*5 + 2 
-  Out[301]: 42 
-</​code>​ 
- 
-In order to compute something like $\sin(\pi/​2)$ we first need to //import// the //math// module: 
-<code python> 
-In [303]: import math 
-In [304]: math.sin(math.pi/​2) 
-1.0 
-</​code>​ 
- 
-How do I find out what other mathematical functions are available? 
-  help("​math"​) 
- 
- 
- 
-===== Plotting ===== 
- 
-Let's get on to that all important step of visualizing data.  We will be using the [[http://​matplotlib.org |matplotlib]] Python package for that.  Let's start by plotting the function $f(x) = x^2$. 
- 
-First, let's generate the numbers. Well, there are tons of ways to do so.  First, using a''​for''​ loop. 
-<code python> 
-In [3]: f = [] 
- 
-In [4]: for i in range(10) : 
-   ​...: ​    ​f.append(i**2) 
-   ​...: ​     
- 
-In [5]: f 
-Out[5]: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] 
-</​code>​ 
- 
-To plot the data, first import the ''​pyplot''​ module. 
- 
-<code python> 
-In [6]: import matplotlib.pyplot as plt 
- 
-In [7]: plt.plot(range(10),​ f) 
-Out[7]: [<​matplotlib.lines.Line2D at 0x10549b590>​] 
- 
-</​code>​ 
-In order to actually see the plot you need to do: 
- 
-<code python> 
-In [8]: plt.show() 
-</​code>​ 
-As an alternative,​ you can put matplotlib in interactive mode before plotting using the command ''​plt.ion()''​. 
- 
-Python has some nifty syntax for generating lists. ​ Watch this!  A [[http://​www.secnetix.de/​olli/​Python/​list_comprehensions.hawk|list comprehension]]!! 
- 
-<code python> 
-In [9]: f = [i**2 for i in range(10)] 
- 
-In [10]: f 
-Out[10]: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] 
-</​code>​ 
- 
-There'​s an alternative way of doing this using ''​numpy'':​ 
- 
-<code python> 
- 
-In [11]: import numpy as np 
- 
-In [12]: f = np.arange(10)**2 
- 
-In [13]: f 
-Out[13]: array([ 0,  1,  4,  9, 16, 25, 36, 49, 64, 81]) 
-</​code>​ 
- 
-Note that plotting functions to accept either lists or ''​numpy''​ arrays, so a fast way of doing our plot is 
-<code python> 
-In [14]: plt.plot(np.arange(10),​ np.arange(10)**2) 
-</​code>​ 
- 
-For a smoother plot: 
-<code python> 
-In [14]: x = np.arange(10,​ 0.1) 
- 
-In [15]: plt.plot(x, x**2, '​ob'​) 
-Out[15]: [<​matplotlib.lines.Line2D at 0x1054162d0>​] 
-</​code>​ 
-/* {{ Notes:​plot2.png?​400 ​ }}*/ 
- 
- 
-We can add a second plot to the same axes by calling //plot// again: 
-<code python> 
-In [16]: plt.plot(x, x, '​dr'​) 
-Out[16]: [<​matplotlib.lines.Line2D object at 0x3608990>​] 
-</​code>​ 
- 
-/*{{ Notes:​plot3.png?​400 ​ }}*/ 
- 
- 
-===== Matrices in Python ===== 
- 
-Can I work with vectors and matrices in python? 
- 
-Of course! ​ No data analysis tool is worth the bytes it burns if it 
-doesn'​t. The ''​numpy''​ package provides the required magic. 
-Let's create an array that represents the following matrix: 
-\[\left ( \begin{array}{cc} 
- 1 & 2\\ 
- 3 & 4\\ 
- 5 & 6 
- \end{array} \right ) \] 
-by doing 
-<​code>​ 
-In [17]: import numpy as np 
- 
-In [18]: m = np.array([[1,​2],​ [3,4], [5,6]]) 
- 
-In [19]: m 
-Out[19]: ​ 
-array([[1, 2], 
-       [3, 4], 
-       [5, 6]]) 
-</​code>​ 
- 
-Let's construct the matrices 
-\[a = \left ( \begin{array}{cc} 
- 2 & 2 & 2\\ 
- 2 & 2 & 2\\ 
- 2 & 2 & 2 
- \end{array} \right ) \] 
-and 
-\[b = \left ( \begin{array}{cc} 
- 1 & 2 & 3\\ 
- 4 & 5 & 6\\ 
- 7 & 8 & 9 
- \end{array} \right ) \] 
-<code python> 
-In [16]: a = np.ones((3,​3)) * 2 
- 
-In [17]: a 
-Out[17]: ​ 
-array([[ 2.,  2.,  2.], 
-       [ 2.,  2.,  2.], 
-       [ 2.,  2.,  2.]]) 
- 
-In [18]: b = np.resize(np.arange(9)+1,​(3,​3)) 
- 
-In [19]: b 
-Out[19]: ​ 
-array([[1, 2, 3], 
-       [4, 5, 6], 
-       [7, 8, 9]]) 
-</​code>​ 
- 
-What is the value of $a * b$? 
-<code python> 
-In [20]: a * b 
-Out[21]: ​ 
-array([[ 2,  4,  6], 
-       [ 8, 10, 12], 
-       [14, 16, 18]]) 
-</​code>​ 
-The ''​*''​ operator does a component-wise multiplication. ​ Use the 
-''​numpy''​ function ''​dot''​ to do matrix multiplication. 
- 
-<code python> 
-In [22]: np.dot(a,b) 
-Out[22]: ​ 
-array([[24, 30, 36], 
-       [24, 30, 36], 
-       [24, 30, 36]]) 
-</​code>​ 
- 
-An array is transposed by 
-<code python> 
-In [23]: b.transpose() 
-Out[23]: ​ 
-array([[1, 4, 7], 
-       [2, 5, 8], 
-       [3, 6, 9]]) 
- 
-In [24]: b.T 
-Out[24]: ​ 
-array([[1, 4, 7], 
-       [2, 5, 8], 
-       [3, 6, 9]]) 
-</​code>​ 
- 
-Elements and sub-matrices are easily extracted: 
-<​code>​ 
-In [25]: b 
-Out[25]: ​ 
-array([[1, 2, 3], 
-       [4, 5, 6], 
-       [7, 8, 9]]) 
- 
-In [26]: b[0,0] 
-Out[26]: 1 
- 
-In [27]: b[0,1] 
-Out[27]: 2 
- 
-In [28]: b[0:2, 1:3] 
-Out[28]: ​ 
-array([[2, 3], 
-       [5, 6]]) 
-</​code>​ 
- 
-Let's multiply the first row of a $a$ by the second column of $b$. 
-<​code>​ 
-In [29]: np.dot(a[0],​ b[:,1]) 
-Out[29]: 30.0 
- 
-In [30]: np.dot(a[0],​b.T[1]) 
-Out[30]: 30.0 
-</​code>​ 
- 
-How do I find the inverse of a matrix?  ​ 
-<code python> 
-In [2]: z = np.array([[2,​1,​1],​[1,​2,​2],​[2,​3,​4]]) 
- 
-In [3]: z 
-Out[3]: ​ 
-array([[2, 1, 1], 
-       [1, 2, 2], 
-       [2, 3, 4]]) 
- 
-In [4]: np.linalg.inv(z) 
-Out[4]: ​ 
-array([[ 0.66666667, -0.33333333, ​ 0.        ], 
-       [ 0.        ,  2.        , -1.        ], 
-       ​[-0.33333333,​ -1.33333333, ​ 1.        ]]) 
- 
-In [5]: np.dot(z, np.linalg.inv(z)) 
-Out[5]: ​ 
-array([[ 1.,  0.,  0.], 
-       [ 0.,  1.,  0.], 
-       [ 0.,  0.,  1.]]) 
-</​code>​ 
python_getting_started.txt ยท Last modified: 2016/08/02 14:47 (external edit)