18 .. #. getting started with lists. |
18 .. #. getting started with lists. |
19 |
19 |
20 .. Author: Anoop Jacob Thomas <anoop@fossee.in> |
20 .. Author: Anoop Jacob Thomas <anoop@fossee.in> |
21 Internal Reviewer : Puneeth |
21 Internal Reviewer : Puneeth |
22 External Reviewer : |
22 External Reviewer : |
|
23 Language Reviewer : Bhanukiran |
23 Checklist OK? : <put date stamp here, if OK> [2010-10-05] |
24 Checklist OK? : <put date stamp here, if OK> [2010-10-05] |
24 |
25 |
25 =========================== |
26 =========================== |
26 Getting started with Arrays |
27 Getting started with Arrays |
27 =========================== |
28 =========================== |
32 |
33 |
33 Welcome to the spoken tutorial on getting started with arrays. |
34 Welcome to the spoken tutorial on getting started with arrays. |
34 |
35 |
35 {{{ switch to next slide, outline slide }}} |
36 {{{ switch to next slide, outline slide }}} |
36 |
37 |
37 In this tutorial, we will learn about arrays, we will learn how to convert |
38 In this tutorial, we will learn about the data structure called an array, how to convert |
38 a list into an array array operations and also why an array is preferred |
39 a list into an array, operations on arrays and also why an array is preferred |
39 over lists. |
40 to lists. |
40 |
41 |
41 .. #[Puneeth: Fix the grammar above.] |
42 .. #[Puneeth: Fix the grammar above.] |
42 |
43 |
43 {{{ switch to next slide on overview of array }}} |
44 {{{ switch to next slide on overview of array }}} |
44 |
45 |
45 Arrays are homogeneous data structures. Unlike lists, arrays cannot have |
46 Arrays are homogeneous data structures. Unlike lists, arrays cannot have |
46 heterogeneous data elements, that is, it can have only one type of data |
47 heterogeneous data elements, that is, they can have only one type of data |
47 type, either all integers, or strings, or float, and not a mix. |
48 as their entries, be them all integers, strings, or maybe floats, but not a mix. |
48 |
49 |
49 .. #[Puneeth: Use multiple short sentences, rather than one long sentence |
50 .. #[Puneeth: Use multiple short sentences, rather than one long sentence |
50 I would've written something like this. |
51 I would've written something like this. |
51 |
52 |
52 Unlike lists, arrays are homogeneous data structures. They can have only |
53 Unlike lists, arrays are homogeneous data structures. They can have only |
53 type of data, ....] |
54 type of data, ....] |
54 |
55 |
55 Arrays are really fast in mathematical operations when compared to lists, |
56 Arrays of a given length are comparatively much faster in mathematical |
56 because of the same type of data in arrays. |
57 operations than lists of the same length, because of the fact that they are |
|
58 homogeneous data structures. |
57 |
59 |
58 .. #[Puneeth: For what size of an array is that the comparison? |
60 .. #[Puneeth: For what size of an array is that the comparison? |
59 |
61 |
60 {{{ switch to the next slide, creating arrays }}} |
62 {{{ switch to the next slide, creating arrays }}} |
61 |
63 |
110 ar = arange(1,9) |
112 ar = arange(1,9) |
111 |
113 |
112 .. #[Puneeth: say, creating the same array as before. for some time I got |
114 .. #[Puneeth: say, creating the same array as before. for some time I got |
113 .. confused .] |
115 .. confused .] |
114 |
116 |
115 And we obtained a single dimensional array with elements from 1 to 8. |
117 And we obtained a one dimensional array with elements from 1 to 8. |
116 |
118 |
117 :: |
119 :: |
118 |
120 |
119 print ar |
121 print ar |
120 |
122 |
121 .. #[Puneeth: be consistent with voice. say, we obtained... or something.] |
123 .. #[Puneeth: be consistent with voice. say, we obtained... or something.] |
122 |
124 |
123 And how can we make it a two dimensional array of order 2 by 4. Pause here |
125 And how can we make it a two dimensional array of order 2 by 4? Pause here |
124 and try to do it yourself, try ``ar.tab`` and find a suitable method for |
126 and try to do it yourself, try ``ar.tab`` and find a suitable method for |
125 that. |
127 that. |
126 |
128 |
127 {{{ switch to next slide, reshape() method }}} |
129 {{{ switch to next slide, reshape() method }}} |
128 |
130 |
152 a3 = array(l1) |
154 a3 = array(l1) |
153 |
155 |
154 |
156 |
155 {{{ switch to the next slide, problem statement of unsolved exercise 1 }}} |
157 {{{ switch to the next slide, problem statement of unsolved exercise 1 }}} |
156 |
158 |
157 Create a three dimensional array of the order (2,2,4). |
159 Create a three dimensional array of the shape (2,2,4). |
158 |
160 |
159 .. #[Puneeth: s/order/shape or size ?] |
161 .. #[Puneeth: s/order/shape or size ?] |
160 |
162 |
161 {{{ switch to the next slide, shape of an array }}} |
163 {{{ switch to the next slide, shape of an array }}} |
162 |
164 |
163 To find the shape of an array we can use the object ``.shape``, let us |
165 To find the shape of an array we can use the method ``.shape``, let us |
164 check the shape of the arrays we have created so far, |
166 check the shape of the arrays we have created so far, |
165 |
167 |
166 .. #[Puneeth: s/object/method ?] |
168 .. #[Puneeth: s/object/method ?] |
167 |
169 |
168 :: |
170 :: |
198 |
200 |
199 :: |
201 :: |
200 |
202 |
201 a4 = array([1,2,3,'a string']) |
203 a4 = array([1,2,3,'a string']) |
202 |
204 |
203 Well, we expected an error as previously I said that an array can have only |
205 Well, we would expect an error as it has been previously mentioned that arrays handle |
204 homogeneous elements, but it didn't give an error. Let us check the values |
206 elements with the same datatype, but it didn't raise an error. Let us check the values |
205 in the new array created. In your IPython terminal type, |
207 in the new array created. In your IPython terminal type, |
206 :: |
208 :: |
207 |
209 |
208 a4 |
210 a4 |
209 |
211 |
216 |
218 |
217 .. #[Puneeth: You may want to mention that float is the default dtype.] |
219 .. #[Puneeth: You may want to mention that float is the default dtype.] |
218 |
220 |
219 {{{ highlight all the array elements one by one using mouse movements }}} |
221 {{{ highlight all the array elements one by one using mouse movements }}} |
220 |
222 |
221 all the elements have been implicitly type casted as string, though our |
223 all the elements have been implicitly type casted as strings, though our |
222 first three elements were integers. |
224 first three elements were meant to be integers. |
223 |
225 |
224 .. #[Puneeth: when I type a4 it says some ``dtype`` etc. I don't understand |
226 .. #[Puneeth: when I type a4 it says some ``dtype`` etc. I don't understand |
225 .. what it is, can you explain? ;)] |
227 .. what it is, can you explain? ;)] |
226 |
228 |
227 {{{ switch to the next slide, identity & zeros methods }}} |
229 {{{ switch to the next slide, identity & zeros methods }}} |
228 |
230 |
229 .. #[Puneeth: something needs to motivate this. why are we suddenly talking |
231 .. #[Puneeth: something needs to motivate this. why are we suddenly talking |
230 .. of an identity matrix?] |
232 .. of an identity matrix?] |
231 |
233 |
232 Now let us see how to create identity matrix, an identity matrix is a |
234 Now let us see how to create an identity matrix of a given size, that is a |
233 square matrix in which all the diagonal elements are one and rest of the |
235 two-dimensional array in which all the diagonal elements are ones and rest of the |
234 elements zero. We can create an identity matrix using the method |
236 elements are zeros. We can create an identity matrix using the function |
235 ``identity()``. |
237 ``identity()``. |
236 |
238 |
237 The function ``identity()`` takes an integer argument, |
239 The function ``identity()`` takes an integer argument which specifies the |
|
240 size of the desired matrix, |
238 |
241 |
239 :: |
242 :: |
240 |
243 |
241 identity(3) |
244 identity(3) |
242 |
245 |
243 As you can see the identity method returned a three by three square matrix |
246 As you can see the identity function returned a three by three square matrix |
244 with all the diagonal elements as one and the rest of the elements as zero. |
247 with all the diagonal elements as ones and the rest of the elements as zeros. |
245 |
248 |
246 .. #[Puneeth: You say array here, matrix there -- it's a bit messed up. |
249 .. #[Puneeth: You say array here, matrix there -- it's a bit messed up. |
247 .. Clarify, explicitly.] |
250 .. Clarify, explicitly.] |
248 |
251 |
249 ``zeros()`` function accepts a tuple, which is the order of the array we |
252 ``zeros()`` function accepts a tuple, which is the order of the array that we |
250 want to create, and it generates an array with all elements zero. |
253 want to create, and it generates an array with all elements as zeros. |
251 |
254 |
252 {{{ switch to the next slide, problem statement of solved exercise 1 }}} |
255 {{{ switch to the next slide, problem statement of solved exercise 1 }}} |
253 |
256 |
254 Let us creates an array of the order four by five with all the elements |
257 Let us creates an array of the order four by five with all the elements |
255 zero. We can do it using the method zeros, :: |
258 zero. We can do it using the method zeros, :: |