# HG changeset patch # User Shantanu # Date 1258563643 -19800 # Node ID 141f3903d4e8032cb86833453c8d6e2a02a839d5 # Parent c9f05808e1c498eed71915cc188cf4ca1a1cbe77 Modified Matrix operation part of cheat sheet 4. diff -r c9f05808e1c4 -r 141f3903d4e8 day1/cheatsheet4.tex --- a/day1/cheatsheet4.tex Wed Nov 18 19:26:48 2009 +0530 +++ b/day1/cheatsheet4.tex Wed Nov 18 22:30:43 2009 +0530 @@ -24,25 +24,42 @@ \large{FOSSEE} \end{center} \section{Matrices} -Inputting a Matrix +\subsection{Basics} +Matrix Creation\\ +\typ{In []: C = array([[1,1,2], [2,4,1], [-1,3,7]])}\\ +It creates C matrix of shape 3x3\\ +Shape is dimenions of given array. \begin{lstlisting} -In []: C = array([[1,1,2], - [2,4,1], - [-1,3,7]]) -In []: B = ones_like(C) -In []: A = ones((3,2)) -In []: I = identity(3) +In []: C.shape +Out[]: (3, 3) +In []: shape([[1,2],[4,5],[3,0]]) +Out[]: (3, 2) \end{lstlisting} -Accessing Elements +\typ{In []: B = ones_like(C)} \\ +B would be array of ones with the same shape and type as C.\\ +\typ{In []: A = ones((3,2))} \\ +A would be new array of given shape(arguments), filled with ones.\\ +\typ{In []: I = identity(3)}\\ +I would be identity matrix of shape 3x3 + +\subsection{Accessing Elements} \begin{lstlisting} +In []: C +Out[]: +array([[ 1, 1, 2], + [ 2, 4, 1], + [-1, 3, 7]]) In []: C[1,2] Out[]: 1 - +\end{lstlisting} +Two indexes seperated by ',' specifies row, column. So \kwrd{C[1,2]} gets third element of second row(indices starts from 0). +\newpage +\begin{lstlisting} In []: C[1] Out[]: array([2, 4, 1]) \end{lstlisting} - -Changing elements +Single index implies complete row. +\subsection{Changing elements} \begin{lstlisting} In []: C[1,1] = -2 In []: C @@ -59,19 +76,27 @@ [-1, 3, 7]]) \end{lstlisting} -Slicing +\subsection{Slicing} +Accessing rows with Matricies is straightforward. But If one wants to access particular Column, or want a sub-matrix, Slicing is the way to go. \begin{lstlisting} In []: C[:,1] Out[]: array([1, 0, 3]) - +\end{lstlisting} +First index(:) specifies row(':' implies all the rows) and second index(1) specifies column(second column). +\begin{lstlisting} In []: C[1,:] Out[]: array([0, 0, 0]) - +\end{lstlisting} +Here we get second row(1), all columns(':') of C matrix. +\newpage +\begin{lstlisting} In []: C[0:2,:] Out[]: array([[1, 1, 2], [0, 0, 0]]) - +\end{lstlisting} +Result is sub-matrix with first and second row(endpoint is excluded), and all columns from C. +\begin{lstlisting} In []: C[1:3,:] Out[]: array([[ 0, 0, 0], @@ -81,7 +106,9 @@ Out[]: array([[1, 1, 2], [0, 0, 0]]) - +\end{lstlisting} +\typ{':2'} => start from first row, till and excluding third row. +\begin{lstlisting} In []: C[1:,:] Out[]: array([[ 0, 0, 0], @@ -92,32 +119,42 @@ array([[ 0, 0], [-1, 3]]) \end{lstlisting} - -Striding +\typ{'1:'} => Start from second row, till last row\\ +\typ{':2'} => Start from first column, till and excluding third column. +\subsection{Striding} +Often apart from submatrix, one needs to get some mechanism to jump a step. For example, how can we have all alternate rows of a Matrix. \\ +Following method will return Matrix with alternate rows. \begin{lstlisting} In []: C[::2,:] Out[]: array([[ 1, 1, 2], [-1, 3, 7]]) - +\end{lstlisting} +\typ{C[startR:stopR:stepR,startC:stopC:stepC]} => Syntax of mentioning starting index, ending index, and step to jump.\\ +In above mentioned case, \typ{'::2'} means, start from first row, till last row(both are blank), with step of 2, that is, skipping alternate row. After first row, C[startR], next row would be C[startR+stepR] and so on. +\begin{lstlisting} In []: C[:,::2] Out[]: xarray([[ 1, 2], [ 0, 0], [-1, 7]]) - +\end{lstlisting} +Same as above, just that here we get matrix with each alternate column and all rows. +\begin{lstlisting} In []: C[::2,::2] Out[]: array([[ 1, 2], [-1, 7]]) \end{lstlisting} -Matrix Operations +\Section{Matrix Operations} +For a Matrix A and B of equal shapes. \begin{lstlisting} In []: A.T # Transpose In []: sum(A) # Sum of all elements In []: A+B # Addition -In []: A*B # Product +In []: A*B # Element wise product +In []: dot(A,b) #Matrix multiplication In []: inv(A) # Inverse In []: det(A) # Determinant \end{lstlisting}