# HG changeset patch # User Puneeth Chaganti # Date 1255008934 -19800 # Node ID 0471f869407543d6d090b14f0a4a60016bcf6ad0 # Parent 4f2b4c14fc0320117f18a9c73d9219cdaed7abd6# Parent edfe20d6733c5f633ab041b86480842dd1cb5870 Merged my head with mainline. diff -r edfe20d6733c -r 0471f8694075 day2/session1.tex --- a/day2/session1.tex Thu Oct 08 15:42:43 2009 +0530 +++ b/day2/session1.tex Thu Oct 08 19:05:34 2009 +0530 @@ -146,16 +146,25 @@ \frametitle{Examples of \num} \begin{lstlisting} # Simple array math example ->>> from numpy import * ->>> a = array([1,2,3,4]) ->>> b = array([2,3,4,5]) +>>> import numpy as np +>>> a = np.array([1,2,3,4]) +>>> b = np.arange(2,6) +>>> b +array([2,3,4,5]) >>> a*2 + b + 1 # Basic math! array([5, 8, 11, 14]) +\end{lstlisting} +\end{frame} + +\begin{frame}[fragile] + \frametitle{Examples of \num} +\begin{lstlisting} # Pi and e are defined. ->>> x = linspace(0.0, 10.0, 1000) ->>> x *= 2*pi/10 # inplace. +>>> x = np.linspace(0.0, 10.0, 1000) +>>> x *= 2*np.pi/10 # inplace. # apply functions to array. ->>> y = sin(x) +>>> y = np.sin(x) +>>> z = np.exp(y) \end{lstlisting} \inctime{5} \end{frame} @@ -178,14 +187,14 @@ \frametitle{More examples of \num} \vspace*{-8pt} \begin{lstlisting} ->>> x = array([1., 2, 3, 4]) ->>> size(x) +>>> x = np.array([1., 2, 3, 4]) +>>> np.size(x) 4 >>> x.dtype # What is a.dtype? dtype('float64') >>> x.shape (4,) ->>> print rank(x), x.itemsize +>>> print np.rank(x), x.itemsize 1 8 >>> x[0] = 10 >>> print x[0], x[-1] @@ -196,7 +205,7 @@ \begin{frame}[fragile] \frametitle{Multi-dimensional arrays} \begin{lstlisting} ->>> a = array([[ 0, 1, 2, 3], +>>> a = np.array([[ 0, 1, 2, 3], ... [10,11,12,13]]) >>> a.shape # (rows, columns) (2, 4) @@ -206,78 +215,85 @@ >>> a[1,3] = -1 >>> a[1] # The second row array([10,11,12,-1]) - \end{lstlisting} \end{frame} + \begin{frame}[fragile] \frametitle{Array math} \begin{itemize} \item Basic \alert{elementwise} math (given two arrays \typ{a, b}): \typ{+, -, *, /, \%} - \item Inplace operators: \typ{a += b}, or \typ{add(a, b, a)} etc. - \item \typ{sum(x, axis=0)}, - \typ{product(x, axis=0)}, - \typ{dot(a, bp)} + \item Inplace operators: \typ{a += b}, or \typ{np.add(a, b, a)} etc. + \item \typ{np.sum(x, axis=0)}, + \typ{np.product(x, axis=0)}, + \typ{np.dot(a, bp)} \end{itemize} +\begin{lstlisting} +>>> b=np.array([[0,2,4,2],[1,2,3,4]]) +>>> np.add(a,b,a) +>>> np.sum(x,axis=1) +\end{lstlisting} \end{frame} \begin{frame}[fragile] \frametitle{Array math cont.} \begin{itemize} - \item Logical operations: \typ{equal (==)}, \typ{not\_equal (!=)}, - \typ{less (<)}, \typ{greater (>)} etc. - \item Trig and other functions: \typ{sin(x),} - \typ{arcsin(x), sinh(x),} - \typ{exp(x), sqrt(x)} etc. + \item Logical operations: \typ{np.equal (==)}, \typ{np.not\_equal (!=)}, + \typ{np.less (<)}, \typ{np.greater (>)} etc. + \item Trig and other functions: \typ{np.sin(x),} + \typ{np.arcsin(x), np.sinh(x),} + \typ{np.exp(x), np.sqrt(x)} etc. \end{itemize} +\begin{lstlisting} +>>> np.greater(a,4) +>>> np.sqrt(a) +\end{lstlisting} \inctime{10} \end{frame} \subsection{Array Creation \& Slicing, Striding Arrays} \begin{frame}[fragile] \frametitle{Array creation functions} - \begin {block}{\typ{array(object, dtype=None, ...)}} - \begin{lstlisting} - >>> array( [2,3,4] ) - array([2, 3, 4]) - \end{lstlisting} - \end {block} - \begin{block}{\typ{linspace(start, stop, num=50, ...)}} - \begin{lstlisting} - >>> linspace( 0, 2, 4 ) - array([0.,0.6666667,1.3333333,2.]) - \end{lstlisting} - \end{block} \begin{itemize} - \item also try \typ{arange} command + \item {\typ{np.array(object,dtype=None,...)} + \begin{lstlisting} +>>> np.array([2,3,4]) +array([2, 3, 4]) + \end{lstlisting} + \item \typ{np.linspace(start,stop,...)} + \begin{lstlisting} +>>> np.linspace(0, 2, 4) +array([0.,0.6666667,1.3333333,2.]) + \end{lstlisting} + \item Also try \typ{np.arange} \end{itemize} \end{frame} \begin{frame}[fragile] \frametitle{Array creation functions cont.} \begin{itemize} - \item \typ{ones(shape, dtype=None, ...)} + \item \typ{np.ones(shape, dtype=None, ...)} \begin{lstlisting} - >>>ones([2,2]) - array([[ 1., 1.], - [ 1., 1.]]) +>>>np.ones([2,2]) +array([[ 1., 1.], + [ 1., 1.]]) \end{lstlisting} - \item \typ{identity(n)} - \item \typ{ones\_like(x)} + \item \typ{np.identity(n)} + \item \typ{np.ones\_like(x)} \begin{lstlisting} - >>>a = array([[1,2,3],[4,5,6]]) - >>>ones_like(a) - array([[1, 1, 1], - [1, 1, 1]]) +>>>a = np.array([[1,2,3],[4,5,6]]) +>>>np.ones_like(a) +array([[1, 1, 1], + [1, 1, 1]]) \end{lstlisting} - \item check out \typ{zeros, zeros\_like, empty} + \item Also try \typ{zeros, zeros\_like, empty} \end{itemize} \end{frame} \begin{frame}[fragile] \frametitle{Slicing arrays} \begin{lstlisting} ->>> a = array([[1,2,3], [4,5,6], +>>> a = np.array([[1,2,3], [4,5,6], [7,8,9]]) >>> a[0,1:3] array([2, 3]) @@ -327,8 +343,8 @@ \item Scale the image to 50\% \item Introduce some random noise \item Smooth the image using a mean filter - \\\small{Take the mean of all the neighbouring elements} - \\\small{How fast can you do it?} + \\\small{Each element in the array is replaced by mean of all the neighbouring elements} + \\\small{How fast does your code run?} \end{enumerate} \inctime{15} \end{frame} @@ -408,7 +424,7 @@ \begin{frame}[fragile] \frametitle{Legends} \begin{lstlisting} ->>> x = linspace(0, 2*pi, 1000) +>>> x = linspace(0, 2*np.pi, 1000) >>> plot(x, cos(5*x), 'r--', label='cosine') >>> plot(x, sin(5*x), 'g--', @@ -435,7 +451,7 @@ \end{frame} \begin{frame}[fragile] - \frametitle{Note: \typ{pylab} in Python scripts} + \frametitle{\typ{pylab} in Python scripts} \begin{lstlisting} import pylab x = pylab.linspace(0, 20, 1000) @@ -444,7 +460,7 @@ # Can also use: from pylab import linspace, sin, plot \end{lstlisting} -\inctime{5} +\inctime{10} \end{frame} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -742,7 +758,6 @@ \tiny For details see \url{http://matplotlib.sourceforge.net/screenshots/plotmap.py} \end{center} -\inctime{5} \end{frame} @@ -753,6 +768,7 @@ \item \url{http://matplotlib.sf.net/tutorial.html} \item \url{http://matplotlib.sf.net/screenshots.html} \end{itemize} +\inctime{5} \end{frame} \begin{frame} diff -r edfe20d6733c -r 0471f8694075 day2/session2.tex --- a/day2/session2.tex Thu Oct 08 15:42:43 2009 +0530 +++ b/day2/session2.tex Thu Oct 08 19:05:34 2009 +0530 @@ -347,14 +347,16 @@ \frametitle{Interpolation} Try it! \begin{lstlisting} - >>> from scipy import interpolate - >>> interpolate.interp1d? - >>> x = np.arange(0,2*np.pi,np.pi/4) - >>> y = np.sin(x) - >>> fl = interpolate.interp1d(x,y,kind='linear') - >>> fc = interpolate.interp1d(x,y,kind='cubic') - >>> fl(np.pi/3) - >>> fc(np.pi/3) +>>> from scipy import interpolate +>>> interpolate.interp1d? +>>> x = np.arange(0,2*np.pi,np.pi/4) +>>> y = np.sin(x) +>>> fl = interpolate.interp1d( + x,y,kind='linear') +>>> fc = interpolate.interp1d( + x,y,kind='cubic') +>>> fl(np.pi/3) +>>> fc(np.pi/3) \end{lstlisting} \end{frame} @@ -413,7 +415,8 @@ \begin{equation*} \frac{d^2x}{dt^2}+\mu(x^2-1)\frac{dx}{dt}+x= 0 \end{equation*} -\inctime{25} + Make a plot of $\frac{dx}{dt}$ vs. $x$. +\inctime{30} \end{frame} @@ -424,5 +427,3 @@ - random number generation. - Image manipulation: jigsaw puzzle. - Monte-carlo integration. - -