arrays.txt
author Shantanu <shantanu@fossee.in>
Wed, 14 Apr 2010 12:20:26 +0530
changeset 54 46a3575919f5
parent 40 6e3526275a00
child 55 1fe734b20950
permissions -rw-r--r--
Work on session 4, Arrays started.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
54
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
     1
Hello and welcome to the tutorial on Matrices.
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
     2
All matrices operations are done using arrays.
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
     3
We have already seen in previous session that how arrays are better suited for particular mathematical operations. In this session we are going to cover more details on Arrays, how to create/initialize them, how to manipulate and use them for solving given problem.
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
     4
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
     5
First thing first, we start with creating a normal array by:
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
     6
a (equal to)= array([5, 8, 10, 13])
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
     7
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
     8
and we have a as array. we can cross the content by
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
     9
a
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    10
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    11
Here a is single dimension array, that is it has only one row. We can create multi-dimensional arrays by
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    12
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    13
c = array([[11,12,13], [21,22,23], [31,32,33]])
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    14
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    15
both c and a are arrays but with different dimensions or shape
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    16
we can check shape of arrays by using shape attribute of arrays.
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    17
a.shape
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    18
c.shape
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    19
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    20
some other handy array initialization methods are also available to make life easier.
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    21
say we want to create a array of size 3x4 with all values initialized to be 1, we can use
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    22
b = ones((3, 4))
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    23
check value by
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    24
b
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    25
similarly, we already have a array, and we want to create one more array with same shape and initial values to be one, for that we will use
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    26
d = ones_like(c)
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    27
and d will be 3x3 array with all values 1
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    28
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    29
Similarly there are functions like zeros and zeros_like which initialize array with all values being 0. One more useful function available is 'identity', it create identity matrix(array) of given order
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    30
i = identity(3)
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    31
i
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    32
i = identity(5)
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    33
i
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    34
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    35
We have seen 
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    36
    Welcome to the Tutorial on arrays. 
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    37
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    38
    As mentioned in [the previous tutorial] arrays are much faster and
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    39
    more efficient. In this tutorial we shall look at creating arrays,
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    40
    accessing elements and changing them. 
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    41
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    42
    ---
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    43
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    44
    Let's start with creating simple arrays. We've already seen how to
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    45
    convert lists to arrays. Inputting a new array is similar to that. 
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    46
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    47
    In []: 
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    48
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    49
    Type /a/, to see what it is. 
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    50
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    51
    In []: a
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    52
    
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    53
    We enter a multi-dimensional array this way -
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    54
    
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    55
    In []: c = array([[11,12,13],
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    56
                     [21,22,23],
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    57
                      [31,32,33]])
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    58
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    59
    To see what c is, we just type c in the prompt. 
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    60
		      
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    61
    In []: c
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    62
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    63
    To see the dimensions of the array c, we use c.shape
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    64
    In []: c.shape 
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    65
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    66
    Now let us look at some special methods of creating an
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    67
    array. There are various functions that allow us to create special
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    68
    arrays. 
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    69
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    70
    The first one we shall look at is, /arange/. /arange/ is similar to
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    71
    the range command, except that it returns an array and accepts
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    72
    float arguments. 
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    73
    
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    74
    In []: a = arange(10)
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    75
    
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    76
    In []: a
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    77
    This is the array we just created. 
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    78
    
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    79
    In []: a.shape
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    80
    Note that /a/ is one dimensional and has 10 elements, as expected. 
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    81
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    82
    We could also use a.shape to change the shape of the array a. 
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    83
    In []: a.shape = 2,5
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    84
    Note that the total size of new array must be unchanged. 
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    85
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    86
    We type a, to see what it looks like
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    87
    In []: a
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    88
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    89
    ones command can be used to get an array with all the entries as
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    90
    ones. We pass it the shape of the array that we require. 
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    91
    
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    92
    In []: 
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    93
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    94
    Look at b, by printing it out. 
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    95
    In []: b 
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    96
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    97
    To create an array with all entries as ones, with it's shape
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    98
    similar to an already existing array, we use the ones_like
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
    99
    command.  
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   100
    In []: b = ones_like(a)
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   101
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   102
    zeros and zeros_like are similar commands that can give you arrays
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   103
    with all zeros. empty and empty_like give you empty arrays (arrays
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   104
    with no initialization done.)
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   105
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   106
    In []: b = zeros((3, 4))
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   107
    In []: b = zeros_like(a)
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   108
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   109
    The identity command can be used to obtain a square array with
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   110
    ones on the main diagonal. 
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   111
    
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   112
    In []: identity(3)
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   113
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   114
    To obtain a 2-D array, that is not necessarily square, eye command
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   115
    can be used. Look at the documentation of eye (using eye?) for
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   116
    more info. 
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   117
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   118
    ---
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   119
    
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   120
    Now that we have learnt how to create arrays, let's move on to
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   121
    accessing elements and changing them. 
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   122
    
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   123
    Let's work with the c, array which we had already created. 
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   124
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   125
    In []: c 
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   126
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   127
    Let's say we want to access the element 23 in c, we say
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   128
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   129
    In []: c[1][2]
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   130
    Note that this is similar to accessing an element inside a list of
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   131
    lists. Also, note that counting again starts from 0. 
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   132
    
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   133
    But arrays provide a more convenient way to access the elements. 
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   134
    In []: c[1, 2]
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   135
    
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   136
    Now, we can also change the element using a simple assignment. 
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   137
    In []: c[1, 2] = -23
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   138
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   139
    Let's look at accessing more than one elements at a time. We begin
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   140
    with accessing rows. 
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   141
    In []: c[1] gives us the second row. (counting starts from 0)
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   142
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   143
    To get a column, we use a syntax that is similar to the one used
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   144
    to access a single element. 
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   145
    In []: c[:,1], gives us the first column. 
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   146
    
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   147
    The colon specifies that we wish to obtain all elements in that
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   148
    dimension from the array.  
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   149
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   150
    So, we could use a more explicit way to access the second row of
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   151
    the array. 
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   152
    In []: c[1,:]
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   153
    
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   154
    The colon can be used to access specific portions of the array,
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   155
    similar to the way we do with lists. 
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   156
    In []: c[1,1:3]
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   157
    Observe that we get the second and third columns from the second
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   158
    row. As with lists, the number after the colon is excluded when
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   159
    slicing a portion of the array. 
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   160
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   161
    In []: c[1:3,1]
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   162
    Now, we get the second and third rows from the first column. 
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   163
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   164
    In []: c[1:3,1:3]
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   165
    We get the second and third rows and the second and third
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   166
    columns. 
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   167
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   168
    The numbers before and after the colons are optional. If the
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   169
    number before the colon is omitted, it is assumed to be zero by
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   170
    default. If the element after the colon is omitted, it is assumed
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   171
    to be until the end. 
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   172
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   173
    In []: c[1:, 1:]
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   174
    This is essentially similar to the previous example. We are using
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   175
    the default value i.e, the end, instead of specifying 3,
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   176
    explicitly. 
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   177
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   178
    In []: c[:2, :2]
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   179
    We have omitted specifying the zero before the colon, explicitly. 
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   180
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   181
    --- 
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   182
    
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   183
    You may have observed the similarity of the semi-colon notation to
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   184
    the notation used in lists. As expected, the semi-colon notation
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   185
    also provides a way to specify a jump. This {concept/idea} is
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   186
    termed as Striding. 
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   187
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   188
    To get every alternate row of c, starting from the first one, we say
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   189
    In []: c[::2,:]
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   190
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   191
    To get every alternate row of c, starting from the second one, we
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   192
    say 
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   193
    In []: c[1::2,:]
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   194
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   195
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   196
    In []: c[:,::2]
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   197
    In []: c[::2,::2]
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   198
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   199
    ---
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   200
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   201
    We come to the end of this tutorial on arrays. In this tutorial,
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   202
    you've learnt how to create arrays and access, change elements. 
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   203
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   204
    Thank you. 
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   205
40
6e3526275a00 Adding arrays.txt file , script for arrays tutorial , session 4
amit@thunder
parents:
diff changeset
   206
Hello friends and welcome to the second tutorial in the series of spoken tutorials on Python for Scientific computing. 
6e3526275a00 Adding arrays.txt file , script for arrays tutorial , session 4
amit@thunder
parents:
diff changeset
   207
6e3526275a00 Adding arrays.txt file , script for arrays tutorial , session 4
amit@thunder
parents:
diff changeset
   208
In the previous tutorial we learnt about arrays and we told you that numpy arrays are faster and more efficient . In this tutorial we shall look at creating arrays, accessing elements and changing them. 
6e3526275a00 Adding arrays.txt file , script for arrays tutorial , session 4
amit@thunder
parents:
diff changeset
   209
6e3526275a00 Adding arrays.txt file , script for arrays tutorial , session 4
amit@thunder
parents:
diff changeset
   210
6e3526275a00 Adding arrays.txt file , script for arrays tutorial , session 4
amit@thunder
parents:
diff changeset
   211
Let's start with creating simple arrays. We've already seen how to convert lists to arrays. Inputting a new array is similarto that. 
6e3526275a00 Adding arrays.txt file , script for arrays tutorial , session 4
amit@thunder
parents:
diff changeset
   212
54
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   213
On your Ipython terminal type a = array open parenthesis and then open square brackets 5,8,10,13 close square brackets and close parenthesis . This create an array a . You can see what a is by typing a on the terminal .
40
6e3526275a00 Adding arrays.txt file , script for arrays tutorial , session 4
amit@thunder
parents:
diff changeset
   214
Now we will try to create a multi-dimensional array type in your ipython terminal
6e3526275a00 Adding arrays.txt file , script for arrays tutorial , session 4
amit@thunder
parents:
diff changeset
   215
c= array open parenthesis , then open square brackets 11,12,13 close square bracket 'comma' start square bracket 21 , 22 ,23close square bracket 'comma' open 31,32,33 close square bracket another close square bracket which closes the first sqaure bracket and parenthesis which closes the first parenthesis . Now to see the dimensions of the array c we will do c.shape . We can see that c is a 3 by 3 matrix .
6e3526275a00 Adding arrays.txt file , script for arrays tutorial , session 4
amit@thunder
parents:
diff changeset
   216
6e3526275a00 Adding arrays.txt file , script for arrays tutorial , session 4
amit@thunder
parents:
diff changeset
   217
There are other special methods of creating arrays as well we will now look at them .
6e3526275a00 Adding arrays.txt file , script for arrays tutorial , session 4
amit@thunder
parents:
diff changeset
   218
The first one is the command arange which is similar to range except that it returns an array.
6e3526275a00 Adding arrays.txt file , script for arrays tutorial , session 4
amit@thunder
parents:
diff changeset
   219
We will type on our Ipython interpreter a = arange(10). We will see what a is now . Type a . As we can see This returns us an array of one dimension and has 10 elements .  
6e3526275a00 Adding arrays.txt file , script for arrays tutorial , session 4
amit@thunder
parents:
diff changeset
   220
Ones can be use to get all entries as ones . We can pass it the shape of the array as required .
6e3526275a00 Adding arrays.txt file , script for arrays tutorial , session 4
amit@thunder
parents:
diff changeset
   221
type b=ones open parenthesis , another open parenthesis , 3,4 , close second parenthesis and close first parenthesis . Look at b , by printing it out .
6e3526275a00 Adding arrays.txt file , script for arrays tutorial , session 4
amit@thunder
parents:
diff changeset
   222
To create an array with all entries as ones, with it's shape similar to an already existing array, we use the ones_like
54
46a3575919f5 Work on session 4, Arrays started.
Shantanu <shantanu@fossee.in>
parents: 40
diff changeset
   223
command.  type b= ones_like in parenthesis a .