diff options
Diffstat (limited to 'day1')
-rw-r--r-- | day1/scipy-quickref.tex | 231 |
1 files changed, 231 insertions, 0 deletions
diff --git a/day1/scipy-quickref.tex b/day1/scipy-quickref.tex new file mode 100644 index 0000000..618f2c9 --- /dev/null +++ b/day1/scipy-quickref.tex @@ -0,0 +1,231 @@ +\documentclass{article} +\usepackage{graphicx} +\usepackage[landscape]{geometry} +\usepackage[pdftex]{color} +\usepackage{url} +\usepackage{multicol} +\usepackage{amsmath} +\usepackage{amsfonts} +\newcommand{\ex}{\color{blue}} +\pagestyle{empty} +\advance\topmargin-.9in +\advance\textheight2in +\advance\textwidth3.0in +\advance\oddsidemargin-1.45in +\advance\evensidemargin-1.45in +\parindent0pt +\parskip2pt + +\newcommand{\hr}{\centerline{\rule{3.5in}{1pt}}} +\newcommand{\skipin}{\hspace*{12pt}} + +\usepackage{color} +\definecolor{darkgreen}{rgb}{0,0.5,0} + +\usepackage{listings} +\lstset{language=Python, + basicstyle=\ttfamily\bfseries, + commentstyle=\color{red}\itshape, + stringstyle=\color{darkgreen}, + showstringspaces=false, + keywordstyle=\color{blue}\bfseries} + +\begin{document} +\begin{multicols*}{3} +\begin{center} +\textbf{Python for Scientific Computing}\\ +\textbf{Quick Reference}\\ +FOSSEE -- Dec 1, 2010\\ +\end{center} +\vspace{-2ex} + +%********************************************* + \hr\textbf{Starting up} + +To start \lstinline|ipython| with \lstinline|pylab|:\\ +\lstinline| $ ipython -pylab| %$ + +To exit: \lstinline|^D| (Ctrl-D) + +%********************************************* +\hr\textbf{Plotting} + +Creating a linear array:\\ +{\ex \lstinline| x = linspace(0, 2*pi, 50)|} + +Plotting two variables:\\ +{\ex \lstinline| plot(x, sin(x))|} + +Plotting two lists of equal length x, y:\\ +{\ex \lstinline| plot(x, y)|} + +Plots with colors:\\ +{\ex \lstinline| plot(x, sin(x), 'b')|} gives a blue line + +Line style and markers:\\ +{\ex \lstinline| plot(x, sin(x), '--')|} gives a dashed line\\ +{\ex \lstinline|'.'|} -- a point marker, {\ex \lstinline|'o'|} -- a circle marker + +Labels:\\ +{\ex \lstinline| xlabel('x')|} and {\ex \lstinline|ylabel('sin(x)')|} + +Title (\lstinline|pylab| accepts \TeX~in any text expression):\\ +{\ex \lstinline| title(r'$\sigma$ vs. $\sin(\sigma)$')|} + +Legend:\\ +Use standard placement:\\ +{\ex \lstinline| legend('sin(x)', loc=center)|}\\ +Or explicitly specify location:\\ +{\ex \lstinline| legend(['sin(x)'], loc=(.8,.1))|} + +Annotate:\\ +{\ex \lstinline| legend('annotation string', xy=(1.5, 1))|} + +Saving figures:\\ +{\ex \lstinline| savefig('sinusoids.png')|} + +Miscellaneous:\\ +{\ex \lstinline| clf()|} to clear the plot area\\ +{\ex \lstinline| close()|} to close the figure + +%********************************************* +\textbf{Other plots} + +Pie Charts:\\ +{\ex \lstinline| pie(science.values(), labels=science.keys())|}, +where {\ex \lstinline|science|} is a dictionary. + +%********************************************* +\hr\textbf{Saving and Running scripts} + +{\ex \lstinline| %hist|} returns history of commands used. \\ +To save a set of lines, say 14-18, 20, 22, to \lstinline|sample.py| \\ +{\ex \lstinline| %save sample.py 14-18 20 22|}\\ +To run \lstinline|sample.py| \\ +{\ex \lstinline| %run -i sample.py|} + +%********************************************* + \hr\textbf{Reading from files} + +\lstinline|filename.txt| is a file with float data. + +Using a for loop: (reading line by line) +\vspace{-8pt} +\begin{lstlisting} +for line in open('filename.txt'): + # some processing +\end{lstlisting} +\vspace{-8pt} +Using loadtxt: (reading all the data at once)\\ +{\ex \lstinline|X = loadtxt('filename.txt')|} \\ +X is an array with all the data from \lstinline|filename.txt|\\ +{\ex \lstinline|X = loadtxt('filename.txt', delimiter=';')|} \\ +when ';' delmits the columns of data + +%********************************************* +\hr\textbf{Statistical operations} + +{\ex \lstinline|mean|, \lstinline|median|, \lstinline|std|} + +%********************************************* +\hr\textbf{Array Creation} + +{\ex \lstinline|C = array([[11,12,13], [21,22,23], [31,32,33]])|}\\ +{\ex \lstinline|C.shape|} shape--- rows \& cols\\ +{\ex \lstinline|C.dtype|} data type\\ +{\ex \lstinline|B = ones_like(C)|} array of ones; same shape, dtype as C\\ +\skipin similarly \lstinline|zeros_like, empty_like| \\ +{\ex \lstinline|A = ones((3,2))|} array of ones of shape (3,2)\\ +\skipin similarly \lstinline|zeros, empty|\\ +{\ex \lstinline|I = identity(3)|} identity matrix of size 3x3 + +%********************************************* +\hr\textbf{Accessing \& Changing elements} + +{\ex \lstinline|C[1, 2]|} gets third element of second row\\ +\skipin \textbf{Note:} Indexing starts from 0. \\ +{\ex \lstinline|C[1]|} gets the second row \\ +{\ex \lstinline|C[1,:]|} same as above (`:' implies all columns)\\ +{\ex \lstinline|C[:,1]|} gets the second column (`:' implies all rows)\\ +{\ex \lstinline|C[0:2,:]|} or {\ex \lstinline|C[:2,:]|} gets $1^{st}, 2^{nd}$ rows; all cols\\ +{\ex \lstinline|C[1:3,:]|} or {\ex \lstinline|C[1:,:]|} gets $2^{nd}, 3^{rd}$ +rows; all cols\\ +{\ex \lstinline|C[0:3:2,:]|} or {\ex \lstinline|C[::2,:]|} gets $1^{st}, 3^{rd}$ +rows; all cols + +%********************************************* +\hr\textbf{Matrix Operations} + +For a Matrix A and B of equal shapes:\\ +{\ex \lstinline|A.T|} transpose\\ +{\ex \lstinline|sum(A)|} sum of all elements\\ +{\ex \lstinline|A+B|} addition\\ +{\ex \lstinline|A*B|} element wise product\\ +{\ex \lstinline|dot(A, B)|} Matrix multiplication\\ +{\ex \lstinline|inv(A)|} inverse, {\ex \lstinline|det(A)|} determinant\\ +{\ex \lstinline|eig(A)|} eigen values and vectors\\ +{\ex \lstinline|norm(A)|} norm\\ +{\ex \lstinline|svd(A)|} singular value decomposition + +%********************************************* +\hr\textbf{Solving Linear Equations} + +{\ex \lstinline|A = array([[3,2,-1], [2,-2,4], [-1, 0.5, -1]])|}\\ +\skipin coefficient array\\ +{\ex \lstinline|b = array([1, -2, 0])|} constant array\\ +{\ex \lstinline|x = solve(A, b)|} the required solution + +Checking the solution:\\ +{\ex \lstinline|Ax = dot(A,x)|} matrix multiplication of A and x\\ +{\ex \lstinline|allclose(Ax, b)|} check the closeness of Ax, b + +%********************************************* +\hr\textbf{Roots of Polynomials} + +{\ex \lstinline|coeffs = [1, 6, 13]|} coefficients in descending order\\ +{\ex \lstinline|roots(coeffs)|} returns complex roots of the polynomial + +%********************************************* +\hr\textbf{Roots of non-linear equations} + +{\ex \lstinline|from scipy.optimize import fsolve|}\\ +\skipin \lstinline|fsolve| is not in \lstinline|pylab|\\ +\skipin we import from \lstinline|scipy.optimize| \\ +We wish to find the roots of $f(x)=sin(x)+cos(x)^2$ +\vspace{-8pt} +\begin{lstlisting} +def f(x): + return sin(x)+cos(x)**2 +\end{lstlisting} +\vspace{-8pt} +{\ex \lstinline|fsolve(f, 0)|} \\ +\skipin arguments are function name and initial estimate + +%********************************************* +\hr\textbf{ODE} + +To solve the ODE below:\\ +$\frac{dy}{dt} = ky(L-y)$, L = 25000, k = 0.00003, y(0) = 250\\ +\vspace{-8pt} +\begin{lstlisting} +def f(y, t): + k, L = 0.00003, 25000 + return k*y*(L-y) +\end{lstlisting} +\vspace{-8pt} +{\ex \lstinline|t = linspace(0, 12, 60)|} time over which to solve ODE\\ +{\ex \lstinline|y0 = 250|} initial conditions\\ +{\ex \lstinline|from scipy.integrate import odeint|}\\ +{\ex \lstinline|y = odeint(f, y0, t)|} + +\hr\textbf{FFT} + +{\ex \lstinline|t = linspace(0, 2*pi, 500)|}\\ +{\ex \lstinline|y = sin(4*pi*t)|} a sinusoidal signal\\ +{\ex \lstinline|f = fft(y)|}\\ +{\ex \lstinline|freq = fftfreq(500, t[1] - t[0])|}\\ +{\ex \lstinline|plot(freq[:250], abs(f)[:250])|}\\ + +\end{multicols*} + +\end{document} |