summaryrefslogtreecommitdiff
path: root/scipy
diff options
context:
space:
mode:
authorPrabhu Ramachandran2016-12-22 14:27:10 +0530
committerPrabhu Ramachandran2016-12-22 14:27:10 +0530
commitec9e25ee2f401901ff3abc1722ec774ccdba7d8f (patch)
treef154c657956a0d77c658b5ecde839a32d437e3c0 /scipy
parent5df1e86d78fa82bc919db42fd7a17b1266279c39 (diff)
downloadpython-workshops-ec9e25ee2f401901ff3abc1722ec774ccdba7d8f.tar.gz
python-workshops-ec9e25ee2f401901ff3abc1722ec774ccdba7d8f.tar.bz2
python-workshops-ec9e25ee2f401901ff3abc1722ec774ccdba7d8f.zip
Split session2 into two parts.
Diffstat (limited to 'scipy')
-rw-r--r--scipy/basic/Makefile3
-rw-r--r--scipy/basic/session2a.tex608
-rw-r--r--scipy/basic/session2b.tex (renamed from scipy/basic/session2.tex)429
3 files changed, 624 insertions, 416 deletions
diff --git a/scipy/basic/Makefile b/scipy/basic/Makefile
index 1d7892a..60243f1 100644
--- a/scipy/basic/Makefile
+++ b/scipy/basic/Makefile
@@ -6,7 +6,8 @@
SLIDES= intro.pdf prelims.pdf session1a.pdf \
session1b.pdf \
- session2.pdf \
+ session2a.pdf \
+ session2b.pdf \
session3.pdf \
session4.pdf \
mlab.pdf
diff --git a/scipy/basic/session2a.tex b/scipy/basic/session2a.tex
new file mode 100644
index 0000000..0230456
--- /dev/null
+++ b/scipy/basic/session2a.tex
@@ -0,0 +1,608 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%Tutorial slides on Python.
+%
+% Author: FOSSEE
+% Copyright (c) 2009, FOSSEE, IIT Bombay
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\documentclass[14pt,compress]{beamer}
+%\documentclass[draft]{beamer}
+%\documentclass[compress,handout]{beamer}
+%\usepackage{pgfpages}
+%\pgfpagesuselayout{2 on 1}[a4paper,border shrink=5mm]
+
+% Modified from: generic-ornate-15min-45min.de.tex
+\mode<presentation>
+{
+ \usetheme{Warsaw}
+ \useoutertheme{infolines}
+ \setbeamercovered{transparent}
+}
+
+\usepackage[english]{babel}
+\usepackage[latin1]{inputenc}
+%\usepackage{times}
+\usepackage[T1]{fontenc}
+
+% Taken from Fernando's slides.
+\usepackage{ae,aecompl}
+\usepackage{mathpazo,courier,euler}
+\usepackage[scaled=.95]{helvet}
+
+\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}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Macros
+\setbeamercolor{emphbar}{bg=blue!20, fg=black}
+\newcommand{\emphbar}[1]
+{\begin{beamercolorbox}[rounded=true]{emphbar}
+ {#1}
+ \end{beamercolorbox}
+}
+\newcounter{time}
+\setcounter{time}{0}
+\newcommand{\inctime}[1]{\addtocounter{time}{#1}{\tiny \thetime\ m}}
+
+\newcommand{\typ}[1]{\lstinline{#1}}
+
+\newcommand{\kwrd}[1]{ \texttt{\textbf{\color{blue}{#1}}} }
+
+\newcommand{\num}{\texttt{numpy}}
+
+%%% This is from Fernando's setup.
+% \usepackage{color}
+% \definecolor{orange}{cmyk}{0,0.4,0.8,0.2}
+% % Use and configure listings package for nicely formatted code
+% \usepackage{listings}
+% \lstset{
+% language=Python,
+% basicstyle=\small\ttfamily,
+% commentstyle=\ttfamily\color{blue},
+% stringstyle=\ttfamily\color{orange},
+% showstringspaces=false,
+% breaklines=true,
+% postbreak = \space\dots
+% }
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Title page
+\title[Interactive Plotting]{Introductory Scientific Computing with
+Python}
+\subtitle{More plotting, lists and numpy arrays}
+
+\author[FOSSEE] {FOSSEE}
+
+\institute[FOSSEE -- IITB] {Department of Aerospace Engineering\\IIT Bombay}
+\date[] {Mumbai, India}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%\pgfdeclareimage[height=0.75cm]{iitmlogo}{iitmlogo}
+%\logo{\pgfuseimage{iitmlogo}}
+
+
+%% Delete this, if you do not want the table of contents to pop up at
+%% the beginning of each subsection:
+\AtBeginSubsection[]
+{
+ \begin{frame}<beamer>
+ \frametitle{Outline}
+ \tableofcontents[currentsection,currentsubsection]
+ \end{frame}
+}
+
+\AtBeginSection[]
+{
+ \begin{frame}<beamer>
+ \frametitle{Outline}
+ \tableofcontents[currentsection,currentsubsection]
+ \end{frame}
+}
+
+% If you wish to uncover everything in a step-wise fashion, uncomment
+% the following command:
+%\beamerdefaultoverlayspecification{<+->}
+
+%\includeonlyframes{current,current1,current2,current3,current4,current5,current6}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% DOCUMENT STARTS
+\begin{document}
+
+\begin{frame}
+ \titlepage
+\end{frame}
+
+\begin{frame}
+ \frametitle{Outline}
+ \tableofcontents
+ % You might wish to add the option [pausesections]
+\end{frame}
+
+\section{Plotting Points}
+\begin{frame}[fragile]
+\frametitle{Why would I plot f(x)?}
+Do we plot analytical functions or experimental data?
+\begin{small}
+\begin{lstlisting}
+In []: time = [0., 1., 2, 3]
+
+In []: distance = [7., 11, 15, 19]
+
+In []: plot(time,distance)
+Out[]: [<matplotlib.lines.Line2D object at 0xa73aa8c>]
+
+In []: xlabel('time')
+Out[]: <matplotlib.text.Text object at 0x986e9ac>
+
+In []: ylabel('distance')
+Out[]: <matplotlib.text.Text object at 0x98746ec>
+\end{lstlisting}
+\end{small}
+\end{frame}
+
+\begin{frame}[fragile]
+\begin{figure}
+\includegraphics[width=3.5in]{data/straightline.png}
+\end{figure}
+\alert{Is this what you have?}
+\end{frame}
+
+\begin{frame}[fragile]
+\frametitle{Plotting points}
+\begin{itemize}
+\item What if we want to plot the points?
+\end{itemize}
+\begin{lstlisting}
+ In []: clf()
+
+ In []: plot(time, distance, 'o')
+ Out[]: [<matplotlib.lines.Line2D object at 0xac17e0c>]
+
+ In []: clf()
+ In []: plot(time, distance, '.')
+ Out[]: [<matplotlib.lines.Line2D object at 0xac17e0c>]
+\end{lstlisting}
+\end{frame}
+
+\begin{frame}[fragile]
+\begin{figure}
+\includegraphics[interpolate=true,width=2.35in]{data/stline_dots.png}
+\includegraphics[interpolate=true,width=2.35in]{data/stline_points.png}
+\end{figure}
+\end{frame}
+
+\begin{frame}[fragile]
+\frametitle{Additional Line Styles}
+\begin{itemize}
+ \item \typ{'o'} - Filled circles
+ \item \typ{'.'} - Small Dots
+ \item \typ{'-'} - Lines
+ \item \typ{'--'} - Dashed lines
+\end{itemize}
+\end{frame}
+
+\section{Lists}
+\begin{frame}[fragile]
+ \frametitle{Lists: Introduction}
+ \begin{lstlisting}
+In []: time = [0., 1., 2, 3]
+
+In []: distance = [7., 11, 15, 19]
+ \end{lstlisting}
+What are \typ{time} and \typ{distance}?\\
+\begin{center}
+ \large
+\alert{\typ{lists!!}}
+\end{center}
+\end{frame}
+
+\begin{frame}[fragile]
+\frametitle{Lists: Initializing \& accessing elements}
+\begin{lstlisting}
+In []: mtlist = []
+\end{lstlisting}
+\emphbar{Empty List}
+\begin{lstlisting}
+In []: p = [ 2, 3, 5, 7]
+
+In []: p[1]
+Out[]: 3
+
+In []: p[0]+p[1]+p[-1]
+Out[]: 12
+\end{lstlisting}
+\end{frame}
+
+\begin{frame}[fragile]
+ \frametitle{List: Slicing}
+ \begin{block}{Remember\ldots}
+ \kwrd{In []: p = [ 2, 3, 5, 7]}
+ \end{block}
+\begin{lstlisting}
+In []: p[1:3]
+Out[]: [3, 5]
+\end{lstlisting}
+\emphbar{A slice}
+\begin{lstlisting}
+In []: p[0:-1]
+Out[]: [2, 3, 5]
+In []: p[1:]
+Out[]: [3, 5, 7]
+\end{lstlisting}
+\end{frame}
+
+\begin{frame}[plain,fragile]
+ \frametitle{List: Slicing \ldots}
+ \vspace*{-0.1in}
+ \begin{small}
+ \begin{block}{Remember\ldots}
+ \kwrd{In []: p = [ 2, 3, 5, 7]}
+\end{block}
+\end{small}
+\begin{lstlisting}
+In []: p[0:4:2]
+Out[]: [2, 5]
+In []: p[0::2]
+Out[]: [2, 5]
+In []: p[::2]
+Out[]: [2, 5]
+In []: p[::3]
+Out[]: [2, 7]
+In []: p[::-1]
+Out[]: [7, 5, 3, 2]
+\end{lstlisting}
+\alert{\typ{list[initial:final:step]}}
+\end{frame}
+
+\begin{frame}[fragile]
+ \frametitle{List: Slicing}
+ \begin{block}{Remember\ldots}
+ \kwrd{In []: p = [ 2, 3, 5, 7]}
+ \end{block}
+ What is the output of the following?
+\begin{lstlisting}
+In []: p[1::2]
+
+In []: p[1:-1:2]
+\end{lstlisting}
+\end{frame}
+
+
+%% more on list slicing
+\begin{frame}[fragile]
+\frametitle{List operations}
+\begin{lstlisting}
+In []: b = [ 11, 13, 17]
+In []: c = p + b
+
+In []: c
+Out[]: [2, 3, 5, 7, 11, 13, 17]
+
+In []: p.append(11)
+In []: p
+Out[]: [ 2, 3, 5, 7, 11]
+\end{lstlisting}
+Question: Does \typ{c} change now that \typ{p} is changed?
+\inctime{10}
+\end{frame}
+
+\section{Simple Pendulum}
+\begin{frame}[fragile]
+\frametitle{Simple Pendulum - L and T}
+Let us look at the Simple Pendulum experiment.
+\begin{center}
+\begin{small}
+\begin{tabular}{| c | c | c |}
+\hline
+$L$ & $T$ & $T^2$ \\ \hline
+0.2 & 0.90 & \\ \hline
+0.3 & 1.19 & \\ \hline
+0.4 & 1.30 & \\ \hline
+0.5 & 1.47 & \\ \hline
+0.6 & 1.58 & \\ \hline
+0.7 & 1.77 & \\ \hline
+0.8 & 1.83 & \\ \hline
+\end{tabular}
+\end{small}\\
+\alert{$L \alpha T^2$}
+\end{center}
+\end{frame}
+
+\begin{frame}[fragile]
+\frametitle{Lets use lists}
+\begin{lstlisting}
+In []: L = [0.2, 0.3, 0.4, 0.5,
+ 0.6, 0.7, 0.8]
+
+In []: t = [0.90, 1.19, 1.30,
+ 1.47, 1.58, 1.77,
+ 1.83]
+\end{lstlisting}
+\alert{Gotcha}: Make sure \typ{L} and \typ{t} have the same number
+of elements
+
+\begin{lstlisting}
+In []: print len(L), len(t)
+\end{lstlisting}
+
+\end{frame}
+
+\begin{frame}[fragile]
+\frametitle{Plotting $L$ vs $T^2$}
+\begin{itemize}
+\item We must square each of the values in \typ{t}
+\item How do we do it?
+\item We use a \kwrd{for} loop to iterate over \typ{t}
+\end{itemize}
+\end{frame}
+
+\begin{frame}[fragile]
+\frametitle{Looping with \texttt{for}}
+\begin{lstlisting}
+In []: for time in t:
+ ....: print(time*time)
+ ....:
+ ....:
+\end{lstlisting}
+This will print the square of each item in the list, \typ{t}
+\end{frame}
+
+\begin{frame}[fragile]
+\frametitle{Plotting $L$ vs $T^2$}
+\begin{lstlisting}
+In []: tsq = []
+
+In []: for time in t:
+ ....: tsq.append(time*time)
+ ....:
+ ....:
+
+\end{lstlisting}
+This gives \typ{tsq} which is the list of squares of \typ{t} values.
+\begin{lstlisting}
+In []: print(len(L), len(t), len(tsq))
+Out[]: (7, 7, 7)
+
+In []: plot(L, tsq)
+\end{lstlisting}
+\end{frame}
+
+\begin{frame}[fragile]
+\begin{figure}
+\includegraphics[width=3.5in]{data/L-TSq-limited.png}
+\end{figure}
+\inctime{10}
+\end{frame}
+
+
+\begin{frame}[fragile]
+\frametitle{Don't repeat yourself: functions}
+\noindent Let us define a function to square the list
+\begin{lstlisting}
+In []: def sqr(arr):
+ ...: result = []
+ ...: for x in arr:
+ ...: result.append(x*x)
+ ...: return result
+ ...:
+
+In []: tsq = sqr(t)
+
+\end{lstlisting} %$
+\end{frame}
+
+\begin{frame}[fragile]
+ \frametitle{More on defining functions}
+ \begin{itemize}
+ \item Consider the function \texttt{f(x) = x\textasciicircum{}2}
+ \item Let's write a Python function, equivalent to this
+ \end{itemize}
+ \begin{lstlisting}
+ In[]: def f(x):
+ ....: return x*x
+ ....:
+
+ In[]: f(1)
+ In[]: f(2)
+ \end{lstlisting}
+ \begin{itemize}
+ \item \texttt{def} is a keyword
+ \item \texttt{f} is the name of the function
+ \item \texttt{x} the parameter of the function (local variable)
+ \item \texttt{return} is a keyword
+ \end{itemize}
+\end{frame}
+
+\begin{frame}[fragile]
+ \frametitle{Aside: Exercise}
+ \begin{itemize}
+ \item Write a function called \typ{mysum(a, b)} that returns sum of two
+ arguments.
+ \end{itemize}
+ \pause
+\begin{lstlisting}
+In []: def mysum(a, b):
+ ...: return a + b
+ ...:
+In []: mysum(1, 2)
+
+In []: mysum([1, 2], [3, 4])
+\end{lstlisting}
+\end{frame}
+
+\begin{frame}[fragile]
+ \frametitle{This seems tedious}
+
+ \begin{itemize}
+ \item Do we have to write a function just to get the square of a list?
+ \item Lists
+\begin{itemize}
+ \item Nice
+ \item Not too convenient for math
+ \item Slow
+\end{itemize}
+\item Enter NumPy arrays
+ \begin{itemize}
+ \item Fixed size, data type
+ \item Very convenient
+ \item Fast
+ \end{itemize}
+ \end{itemize}
+ \inctime{10}
+\end{frame}
+
+\subsection{\num\ arrays}
+
+\begin{frame}[fragile]
+\frametitle{NumPy arrays}
+\begin{lstlisting}
+In []: t = array(t)
+
+In []: tsq = t*t
+
+In []: print(tsq)
+
+In []: plot(L, tsq) # works!
+\end{lstlisting} %$
+\end{frame}
+
+\begin{frame}[fragile]
+\frametitle{Speed?}
+
+\noindent Lets use range to create a large list.
+
+\begin{lstlisting}
+In []: t = range(1000000)
+
+In []: tsq = sqr(t)
+
+\end{lstlisting} %$
+
+\noindent Now try it with
+
+\begin{lstlisting}
+In []: t = array(t)
+
+In []: tsq = t*t
+\end{lstlisting}
+\ldots
+\end{frame}
+
+
+\begin{frame}[fragile]
+ \frametitle{IPython tip: Timing}
+
+Try the following:
+ \begin{lstlisting}
+In []: %timeit sqr(t)
+
+In []: %timeit?
+
+ \end{lstlisting}
+
+ \begin{itemize}
+ \item \typ{\%timeit}: accurate, many measurements
+ \item Can also use \typ{\%time}
+ \item \typ{\%time}: less accurate, one measurement
+ \end{itemize}
+
+\inctime{10}
+\end{frame}
+
+
+\begin{frame}[fragile]
+\frametitle{Exercise}
+\begin{center}
+ Find out the speed difference between the \typ{sqr} function and
+ \typ{t*t} on the numpy array.
+\end{center}
+
+\end{frame}
+
+\begin{frame}[fragile]
+ \frametitle{Solution}
+\begin{lstlisting}
+In []: t = linspace(0, 10, 100000)
+In []: %timeit sqr(t)
+In []: %timeit t*t
+\end{lstlisting}
+ \inctime{5}
+\end{frame}
+
+\begin{frame}[fragile]
+\frametitle{Summary}
+\begin{itemize}
+\item Plot attributes
+\item plotting points
+\item Lists
+\item Defining simple functions
+\item Introduction to \num\ arrays
+\item Timing with \typ{\%timeit}
+\end{itemize}
+\end{frame}
+
+\end{document}
+
+%% Questions for Quiz %%
+%% ------------------ %%
+
+\begin{frame}[fragile]
+\frametitle{\incqno }
+ \begin{lstlisting}
+ In []: a = [1, 2, 5, 9]
+ In []: a[0:-1]
+ \end{lstlisting}
+ What is the output?
+\end{frame}
+
+\begin{frame}
+\frametitle{\incqno }
+ How do you combine two lists \emph{a} and \emph{b} to produce one list?
+\end{frame}
+
+\begin{frame}[fragile]
+\frametitle{\incqno }
+ \begin{lstlisting}
+ In []: a = [1, 2, 5, 9]
+ \end{lstlisting}
+ How do you add the value 10 to the end of this list?
+\end{frame}
+
+\begin{frame}
+\frametitle{\incqno }
+Write the code to read a file \texttt{data.txt} and print each line of it?
+\end{frame}
+
+\begin{frame}[fragile]
+\frametitle{\incqno }
+What would be the result of the following code snippet:
+\begin{lstlisting}
+In []: x = linspace(0, 10, 50)
+In []: y = linspace(50, 100, 100)
+In []: plot(x, y)
+\end{lstlisting}
+\end{frame}
+
+\begin{frame}[fragile]
+\frametitle{\incqno }
+The following code snippet has an error/bug:
+\begin{lstlisting}
+In []: l = [0.1, 0.2, 0.3, 0.4]
+In []: t = [0.69, 0.90, 1.19, 1.30]
+In []: tsq = []
+In []: for time in t:
+ ....: tsq.append(time*time)
+ ....: plot(l, tsq)
+\end{lstlisting}
+What is the error? How do you fix it?
+\end{frame}
diff --git a/scipy/basic/session2.tex b/scipy/basic/session2b.tex
index a806988..dd97597 100644
--- a/scipy/basic/session2.tex
+++ b/scipy/basic/session2b.tex
@@ -77,7 +77,7 @@
% Title page
\title[Interactive Plotting]{Introductory Scientific Computing with
Python}
-\subtitle{More plotting, lists and numpy arrays}
+\subtitle{Numpy arrays}
\author[FOSSEE] {FOSSEE}
@@ -128,416 +128,8 @@ Python}
% You might wish to add the option [pausesections]
\end{frame}
-\section{Plotting Points}
-\begin{frame}[fragile]
-\frametitle{Why would I plot f(x)?}
-Do we plot analytical functions or experimental data?
-\begin{small}
-\begin{lstlisting}
-In []: time = [0., 1., 2, 3]
-
-In []: distance = [7., 11, 15, 19]
-
-In []: plot(time,distance)
-Out[]: [<matplotlib.lines.Line2D object at 0xa73aa8c>]
-
-In []: xlabel('time')
-Out[]: <matplotlib.text.Text object at 0x986e9ac>
-
-In []: ylabel('distance')
-Out[]: <matplotlib.text.Text object at 0x98746ec>
-\end{lstlisting}
-\end{small}
-\end{frame}
-
-\begin{frame}[fragile]
-\begin{figure}
-\includegraphics[width=3.5in]{data/straightline.png}
-\end{figure}
-\alert{Is this what you have?}
-\end{frame}
-
-\begin{frame}[fragile]
-\frametitle{Plotting points}
-\begin{itemize}
-\item What if we want to plot the points?
-\end{itemize}
-\begin{lstlisting}
- In []: clf()
-
- In []: plot(time, distance, 'o')
- Out[]: [<matplotlib.lines.Line2D object at 0xac17e0c>]
-
- In []: clf()
- In []: plot(time, distance, '.')
- Out[]: [<matplotlib.lines.Line2D object at 0xac17e0c>]
-\end{lstlisting}
-\end{frame}
-
-\begin{frame}[fragile]
-\begin{figure}
-\includegraphics[interpolate=true,width=2.35in]{data/stline_dots.png}
-\includegraphics[interpolate=true,width=2.35in]{data/stline_points.png}
-\end{figure}
-\end{frame}
-
-\begin{frame}[fragile]
-\frametitle{Additional Line Styles}
-\begin{itemize}
- \item \typ{'o'} - Filled circles
- \item \typ{'.'} - Small Dots
- \item \typ{'-'} - Lines
- \item \typ{'--'} - Dashed lines
-\end{itemize}
-\end{frame}
-
-\section{Lists}
-\begin{frame}[fragile]
- \frametitle{Lists: Introduction}
- \begin{lstlisting}
-In []: time = [0., 1., 2, 3]
-
-In []: distance = [7., 11, 15, 19]
- \end{lstlisting}
-What are \typ{time} and \typ{distance}?\\
-\begin{center}
- \large
-\alert{\typ{lists!!}}
-\end{center}
-\end{frame}
-
-\begin{frame}[fragile]
-\frametitle{Lists: Initializing \& accessing elements}
-\begin{lstlisting}
-In []: mtlist = []
-\end{lstlisting}
-\emphbar{Empty List}
-\begin{lstlisting}
-In []: p = [ 2, 3, 5, 7]
-
-In []: p[1]
-Out[]: 3
-
-In []: p[0]+p[1]+p[-1]
-Out[]: 12
-\end{lstlisting}
-\end{frame}
-
-\begin{frame}[fragile]
- \frametitle{List: Slicing}
- \begin{block}{Remember\ldots}
- \kwrd{In []: p = [ 2, 3, 5, 7]}
- \end{block}
-\begin{lstlisting}
-In []: p[1:3]
-Out[]: [3, 5]
-\end{lstlisting}
-\emphbar{A slice}
-\begin{lstlisting}
-In []: p[0:-1]
-Out[]: [2, 3, 5]
-In []: p[1:]
-Out[]: [3, 5, 7]
-\end{lstlisting}
-\end{frame}
-
-\begin{frame}[plain,fragile]
- \frametitle{List: Slicing \ldots}
- \vspace*{-0.1in}
- \begin{small}
- \begin{block}{Remember\ldots}
- \kwrd{In []: p = [ 2, 3, 5, 7]}
-\end{block}
-\end{small}
-\begin{lstlisting}
-In []: p[0:4:2]
-Out[]: [2, 5]
-In []: p[0::2]
-Out[]: [2, 5]
-In []: p[::2]
-Out[]: [2, 5]
-In []: p[::3]
-Out[]: [2, 7]
-In []: p[::-1]
-Out[]: [7, 5, 3, 2]
-\end{lstlisting}
-\alert{\typ{list[initial:final:step]}}
-\end{frame}
-
-\begin{frame}[fragile]
- \frametitle{List: Slicing}
- \begin{block}{Remember\ldots}
- \kwrd{In []: p = [ 2, 3, 5, 7]}
- \end{block}
- What is the output of the following?
-\begin{lstlisting}
-In []: p[1::2]
-
-In []: p[1:-1:2]
-\end{lstlisting}
-\end{frame}
-
-
-%% more on list slicing
-\begin{frame}[fragile]
-\frametitle{List operations}
-\begin{lstlisting}
-In []: b = [ 11, 13, 17]
-In []: c = p + b
-
-In []: c
-Out[]: [2, 3, 5, 7, 11, 13, 17]
-
-In []: p.append(11)
-In []: p
-Out[]: [ 2, 3, 5, 7, 11]
-\end{lstlisting}
-Question: Does \typ{c} change now that \typ{p} is changed?
-\inctime{10}
-\end{frame}
-
-\section{Simple Pendulum}
-\begin{frame}[fragile]
-\frametitle{Simple Pendulum - L and T}
-Let us look at the Simple Pendulum experiment.
-\begin{center}
-\begin{small}
-\begin{tabular}{| c | c | c |}
-\hline
-$L$ & $T$ & $T^2$ \\ \hline
-0.2 & 0.90 & \\ \hline
-0.3 & 1.19 & \\ \hline
-0.4 & 1.30 & \\ \hline
-0.5 & 1.47 & \\ \hline
-0.6 & 1.58 & \\ \hline
-0.7 & 1.77 & \\ \hline
-0.8 & 1.83 & \\ \hline
-\end{tabular}
-\end{small}\\
-\alert{$L \alpha T^2$}
-\end{center}
-\end{frame}
-
-\begin{frame}[fragile]
-\frametitle{Lets use lists}
-\begin{lstlisting}
-In []: L = [0.2, 0.3, 0.4, 0.5,
- 0.6, 0.7, 0.8]
-
-In []: t = [0.90, 1.19, 1.30,
- 1.47, 1.58, 1.77,
- 1.83]
-\end{lstlisting}
-\alert{Gotcha}: Make sure \typ{L} and \typ{t} have the same number
-of elements
-
-\begin{lstlisting}
-In []: print len(L), len(t)
-\end{lstlisting}
-
-\end{frame}
-
-\begin{frame}[fragile]
-\frametitle{Plotting $L$ vs $T^2$}
-\begin{itemize}
-\item We must square each of the values in \typ{t}
-\item How do we do it?
-\item We use a \kwrd{for} loop to iterate over \typ{t}
-\end{itemize}
-\end{frame}
-
-\begin{frame}[fragile]
-\frametitle{Looping with \texttt{for}}
-\begin{lstlisting}
-In []: for time in t:
- ....: print(time*time)
- ....:
- ....:
-\end{lstlisting}
-This will print the square of each item in the list, \typ{t}
-\end{frame}
-
-\begin{frame}[fragile]
-\frametitle{Plotting $L$ vs $T^2$}
-\begin{lstlisting}
-In []: tsq = []
-
-In []: for time in t:
- ....: tsq.append(time*time)
- ....:
- ....:
-
-\end{lstlisting}
-This gives \typ{tsq} which is the list of squares of \typ{t} values.
-\begin{lstlisting}
-In []: print(len(L), len(t), len(tsq))
-Out[]: (7, 7, 7)
-
-In []: plot(L, tsq)
-\end{lstlisting}
-\end{frame}
-
-\begin{frame}[fragile]
-\begin{figure}
-\includegraphics[width=3.5in]{data/L-TSq-limited.png}
-\end{figure}
-\inctime{10}
-\end{frame}
-
-\begin{frame}[fragile]
-\frametitle{Don't repeat yourself: functions}
-\noindent Let us define a function to square the list
-\begin{lstlisting}
-In []: def sqr(arr):
- ...: result = []
- ...: for x in arr:
- ...: result.append(x*x)
- ...: return result
- ...:
-
-In []: tsq = sqr(t)
-
-\end{lstlisting} %$
-\end{frame}
-
-\begin{frame}[fragile]
- \frametitle{More on defining functions}
- \begin{itemize}
- \item Consider the function \texttt{f(x) = x\textasciicircum{}2}
- \item Let's write a Python function, equivalent to this
- \end{itemize}
- \begin{lstlisting}
- In[]: def f(x):
- ....: return x*x
- ....:
-
- In[]: f(1)
- In[]: f(2)
- \end{lstlisting}
- \begin{itemize}
- \item \texttt{def} is a keyword
- \item \texttt{f} is the name of the function
- \item \texttt{x} the parameter of the function (local variable)
- \item \texttt{return} is a keyword
- \end{itemize}
-\end{frame}
-
-\begin{frame}[fragile]
- \frametitle{Aside: Exercise}
- \begin{itemize}
- \item Write a function called \typ{mysum(a, b)} that returns sum of two
- arguments.
- \end{itemize}
- \pause
-\begin{lstlisting}
-In []: def mysum(a, b):
- ...: return a + b
- ...:
-In []: mysum(1, 2)
-
-In []: mysum([1, 2], [3, 4])
-\end{lstlisting}
-\end{frame}
-
-\begin{frame}[fragile]
- \frametitle{This seems tedious}
-
- \begin{itemize}
- \item Do we have to write a function just to get the square of a list?
- \item Lists
-\begin{itemize}
- \item Nice
- \item Not too convenient for math
- \item Slow
-\end{itemize}
-\item Enter NumPy arrays
- \begin{itemize}
- \item Fixed size, data type
- \item Very convenient
- \item Fast
- \end{itemize}
- \end{itemize}
- \inctime{10}
-\end{frame}
-
-\subsection{\num\ arrays}
-
-\begin{frame}[fragile]
-\frametitle{NumPy arrays}
-\begin{lstlisting}
-In []: t = array(t)
-
-In []: tsq = t*t
-
-In []: print(tsq)
-
-In []: plot(L, tsq) # works!
-\end{lstlisting} %$
-\end{frame}
-
-\begin{frame}[fragile]
-\frametitle{Speed?}
-
-\noindent Lets use range to create a large list.
-
-\begin{lstlisting}
-In []: t = range(1000000)
-
-In []: tsq = sqr(t)
-
-\end{lstlisting} %$
-
-\noindent Now try it with
-
-\begin{lstlisting}
-In []: t = array(t)
-
-In []: tsq = t*t
-\end{lstlisting}
-\ldots
-\end{frame}
-
-
-\begin{frame}[fragile]
- \frametitle{IPython tip: Timing}
-
-Try the following:
- \begin{lstlisting}
-In []: %timeit sqr(t)
-
-In []: %timeit?
-
- \end{lstlisting}
-
- \begin{itemize}
- \item \typ{\%timeit}: accurate, many measurements
- \item Can also use \typ{\%time}
- \item \typ{\%time}: less accurate, one measurement
- \end{itemize}
-
-\inctime{10}
-\end{frame}
-
-
-\begin{frame}[fragile]
-\frametitle{Exercise}
-\begin{center}
- Find out the speed difference between the \typ{sqr} function and
- \typ{t*t} on the numpy array.
-\end{center}
-
-\end{frame}
-
-\begin{frame}[fragile]
- \frametitle{Solution}
-\begin{lstlisting}
-In []: t = linspace(0, 10, 100000)
-In []: %timeit sqr(t)
-In []: %timeit t*t
-\end{lstlisting}
- \inctime{5}
-\end{frame}
+\section{\num\ arrays}
\begin{frame}[fragile]
\frametitle{The \num\ module}
@@ -676,6 +268,8 @@ In []: a[1] = 0 # Entire row to zero.
\inctime{10}
\end{frame}
+\subsection{Slicing arrays}
+
\begin{frame}[plain,fragile]
\frametitle{Slicing arrays}
\vspace*{-0.2in}
@@ -724,6 +318,7 @@ Out[]: array([[1, 3],
\end{lstlisting}
\end{frame}
+\subsection{Array creation}
\begin{frame}[fragile]
\frametitle{Array creation functions}
@@ -848,6 +443,8 @@ Out[]: (90,)
\inctime{5}
\end{frame}
+\subsection{Example: plotting data from file}
+
\begin{frame}[fragile]
\frametitle{Example: plotting data from file}
\alert{Data is usually present in a file!} \\
@@ -936,13 +533,15 @@ Out[]: 0.25979158313283879
\end{lstlisting}
\end{frame}
-\section {Summary}
\begin{frame}[fragile]
-\frametitle{What did we learn?}
+\frametitle{Summary}
\begin{itemize}
- \item Plot attributes and plotting points
- \item Lists
- \item Introduction to \num\ arrays
+\item Introduction to \num\ arrays
+\item Slicing arrays
+\item Multi-dimensional arrays
+\item Array operations
+\item Creating arrays
+\item Loading data from file
\end{itemize}
\inctime{5}