diff -r e675f9208b91 -r 4054b1a6392d getting-started-with-arrays/script.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/getting-started-with-arrays/script.rst Wed Oct 13 17:32:59 2010 +0530 @@ -0,0 +1,324 @@ +.. Objectives +.. ---------- + +.. At the end of this tutorial, you will be able to + +.. 1. Create arrays using data +.. #. Create arrays from lists +.. #. Basic array operations +.. #. Creating identity matrix using ``identity()`` function. +.. #. Learn about ``zeros()``, ``zeros_like()``, ``ones()``, + ``ones_like()`` functions. + +.. Prerequisites +.. ------------- + +.. 1. should have ``ipython`` and ``pylab`` installed. +.. #. getting started with ``ipython``. +.. #. getting started with lists. + +.. Author: Anoop Jacob Thomas + Internal Reviewer : Puneeth + External Reviewer : + Checklist OK? : [2010-10-05] + +=========================== +Getting started with Arrays +=========================== + +.. #[Puneeth: Prerequisites and Objectives are missing. Fill them in] + +{{{ show the welcome slide }}} + +Welcome to the spoken tutorial on getting started with arrays. + +{{{ switch to next slide, outline slide }}} + +In this tutorial, we will learn about arrays, how to convert a list into an +array and also why an array is preferred over lists. And array operations. + +.. #[Puneeth: Fix the grammar above.] + +{{{ switch to next slide on overview of array }}} + +Arrays are homogeneous data structures, unlike lists, arrays cannot have +heterogeneous data elements, that is, it can have only one type of data +type, either all integers, or strings, or float, and not a mix. + +.. #[Puneeth: Use multiple short sentences, rather than one long sentence + I would've written something like this. + + Unlike lists, arrays are homogeneous data structures. They can have only + type of data, ....] + +Arrays are really fast in mathematical operations when compared to lists, +it is at least 80 to 100 times faster than lists. + +.. #[Puneeth: For what size of an array is that the comparison? + +{{{ switch to the next slide, creating arrays }}} + +Now let us see how to create arrays. + +I am assuming that you have your IPython interpreter running with the +``-pylab`` option, so that you have the required modules loaded. + +.. #[Puneeth: 'I am assuming' doesn't sound right. Ask them to open if it +.. is not open?] + +To create an array we will use the function ``array()`` as, + +:: + + a1 = array([1,2,3,4]) + +Notice that here we created a one dimensional array. Also notice the object +we passed to create an array. Now let us see how to create a two +dimensional array. Pause here and try to do it yourself before looking at +the solution. + +.. #[Puneeth: I don't think this question can be solved by an average +.. viewer. Questions during the tutorial, should generally be to re-iterate +.. concepts learnt? ] + +.. #[Puneeth: Also, you didn't even point out that we are converting a +.. list, using the ``array`` function. Bring the later section about +.. converting a list, here. A separate section is not necessary, IMHO.] + +This is how we create two dimensional arrays. + +:: + + a2 = array([[1,2,3,4],[5,6,7,8]]) + +.. #[Puneeth: Again, you could explain a bit about the fact that we are +.. converting a list of lists.] + +Let us see an easy method of creating an array with elements 1 to 8. + +:: + + ar = arange(1,9) + +.. #[Puneeth: say, creating the same array as before. for some time I got +.. confused .] + +And it created a single dimensional array of elements from 1 to 8. + +:: + + print ar + +.. #[Puneeth: be consistent with voice. say, we obtained... or something.] + +And how can we make it a two dimensional array of order 2 by 4. Pause here +and try to do it yourself, try ``ar.tab`` and find a suitable method for +that. + +{{{ switch to next slide, reshape() method }}} + +We can use the function ``reshape()`` for that purpose and it can be done +as, + +:: + + ar.reshape(2,4) + ar.reshape(4,2) + ar = ar.reshape(2,4) + +{{{ switch to next slide, creating array from list}}} + +Now, let us see how to convert a list object to an array. As you have +already seen, in both of the previous statements we have passed a list, so +creating an array can be done so, first let us create a list ``l1`` + +:: + + l1 = [1,2,3,4] + +Now we can convert the list to an array as, + +:: + + a3 = array(l1) + + +{{{ switch to the next slide, problem statement of unsolved exercise 1 }}} + +Create a three dimensional array of the order (2,2,4). + +.. #[Puneeth: s/order/shape or size ?] + +{{{ switch to the next slide, shape of an array }}} + +To find the shape of an array we can use the object ``.shape``, let us +check the shape of the arrays we have created so far, + +.. #[Puneeth: s/object/method ?] + +:: + + a1.shape + +``a1.shape`` object is a tuple, and since a1 is a single dimensional array, +it returned a tuple (4,). + +.. #[Puneeth: first show a 2D array, so that it becomes easier to explain. +.. Also, the word ``tuple`` need not be mentioned. ] + +{{{ switch to the next slide, unsolved exercise 2 }}} + +Find out the shape of the other arrays that we have created. + +.. #[Puneeth: solution missing.] + +{{{ Array can have only a single type of data }}} + +.. #[Puneeth: I guess, this whole section can be skipped. If you want to +.. keep this, just briefly mention that arrays are homogeneous in the +.. intro, don't explain it there.] + +Now let us try to create a new array with a mix of elements and see what +will happen, + +:: + + a4 = array([1,2,3,'a string']) + +Well, we expected an error as previously I said that an array can have only +homogeneous elements, but it didn't give an error. Let us check the values +in the new array created. In your IPython terminal type, +:: + + a4 + +Did you notice it, + +{{{ switch to next slide, implicit type casting }}} + +.. #[Puneeth: typecasting may be unnecessary. (Also too advanced?) an +.. average guy wouldn't use arrays with strings.] + +.. #[Puneeth: You may want to mention that float is the default dtype.] + +{{{ highlight all the array elements one by one using mouse movements }}} + +all the elements have been implicitly type casted as string, though our +first three elements were integers. + +.. #[Puneeth: when I type a4 it says some ``dtype`` etc. I don't understand +.. what it is, can you explain? ;)] + +{{{ switch to the next slide, identity & zeros methods }}} + +.. #[Puneeth: something needs to motivate this. why are we suddenly talking +.. of an identity matrix?] + +An identity matrix is a square matrix in which all the diagonal elements +are one and rest of the elements zero. We can create an identity matrix +using the method ``identity()``. + +The function ``identity()`` takes an integer argument, + +:: + + identity(3) + +As you can see the identity method returned a three by three square array +with all the diagonal elements as one and the rest of the elements as zero. + +.. #[Puneeth: You say array here, matrix there -- it's a bit messed up. +.. Clarify, explicitly.] + +``zeros()`` function accepts a tuple, which is the order of the array we +want to create, and it generates an array with all elements zero. + +{{{ switch to the next slide, problem statement of solved exercise 1 }}} + +Let us creates an array of the order four by five with all the elements +zero. We can do it using the method zeros, :: + + zeros((4,5)) + +Notice that we passed a tuple to the function zeros. + +{{{ switch to next slide, learning exercise }}} + +We learned two functions ``identity()`` and ``zeros()``, find out more +about the functions ``zeros_like()``, ``ones()``, ``ones_like()``. + +{{{ switch to next slide, array operations }}} + +Try the following, first check the value of a1, +:: + + a1 + +``a1`` is a single dimensional array, and now try, +:: + + a1 * 2 + +It returned a new array with all the elements multiplied by 2. +:: + + a1 + +note that the value of a1 still remains the same. + +Similarly with addition, +:: + + a1 + 2 + +it returns a new array, with all the elements summed with two. But +again notice that the value of a1 has not been changed. +:: + + a1 + +You may change the value of a1 by simply assigning the newly returned +array as, +:: + + a1 += 2 + +Notice the change in elements of a, +:: + + a + +We can use all the mathematical operations with arrays, Now let us try this +:: + + a1 = array([1,2,3,4]) + a2 = array([1,2,3,4]) + a1 + a2 + +Returns an array with element by element addition, +:: + + a1 * a2 + +Returns an array with element by element multiplication, notice that it +does not perform matrix multiplication. + +{{{ switch to next slide, summary slide }}} + +So this brings us to the end of this tutorial, in this tutorial we covered +basics of arrays, how to create an array, converting a list to an array, +basic array operations etc. + +.. #[Puneeth: s/how to create an array/creating an array] + +{{{ switch to next slide, thank you }}} + +Thank you! + +.. + Local Variables: + mode: rst + indent-tabs-mode: nil + sentence-end-double-space: nil + fill-column: 75 + End: