NumPy is a Python library for working with multidimensional arrays. The main data type is an array. An array is a set of elements, all of the same type, indexed by a vector of nonnegative integers.

Arrays can be created in different ways:

>>> from numpy import *
>>> a = array( [ 10, 20, 30, 40 ] ) # create an array out of a list
>>> a
array([10, 20, 30, 40])
>>> b = arange( 4 ) # create an array of 4 integers, from 0 to 3
>>> b
array([0, 1, 2, 3])
>>> c = linspace(-pi,pi,3) # create an array of 3 evenly spaced samples from -pi to pi
>>> c
array([-3.14159265, 0. , 3.14159265])

New arrays can be obtained by operating with existing arrays:

>>> d = a+b**2            # elementwise operations
>>> d
array([10, 21, 34, 49])

Arrays may have more than one dimension:

>>> x = ones( (3,4) )
>>> x
array([[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.]])
>>> x.shape # a tuple with the dimensions
(3, 4)

and you can change the dimensions of existing arrays:

>>> y = arange(12)
>>> y
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
>>> y.shape = 3,4 # does not modify the total number of elements
>>> y
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])

It is possible to operate with arrays of different dimensions as long as they fit well (broadcasting).

>>> 3*a                # multiply each element of a by 3
array([ 30, 60, 90, 120])
>>> a+y # sum a to each row of y
array([[10, 21, 32, 43],
[14, 25, 36, 47],
[18, 29, 40, 51]])

Similar to Python lists, arrays can be indexed, sliced and iterated over.

>>> a[2:4] = -7,-3           # modify last two elements of a
>>> for i in a: # iterate over a
... print i
...
10
20
-7
-3

When indexing more than one dimension, indices are separated by commas.

>>> x[1,2] = 20
>>> x[1,:] # x's second row
array([ 1, 1, 20, 1])
>>> x[0] = a # change first row of x
>>> x
array([[10, 20, -7, -3],
[ 1, 1, 20, 1],
[ 1, 1, 1, 1]])




    7           6