NumPy, SciPy and SciKits
Python provides a framework on which numerical and scientific data processing can be built. As part of our short course on Python for Physics and Astronomy we will look at the capabilities of the NumPy, SciPy and SciKits packages. This is a brief overview with a few examples drawn primarily from the excellent but short introductory book SciPy and NumPy by Eli Bressert (O'Reilly 2012).
NumPy
NumPy adds arrays and linear albegra to Python, with special functions, transformations, the ability to operate on all elements of an array in one stroke.
Arrays are at the heart of NumPy. The program
import numpy as np mylist = [1, 3, 5, 7, 11, 13] myarray = np.array(mylist) print myarray
creates a list and makes an array from it. You can create an array of 30 32-bit floating point zeros with
myarray = np.zeros(30, dtype=np.float32)
The dtype argument is optional (defaults to float64) and can be
- unit8, 16, 32, 64
- int8, 16, 32, 64
- float16, 32, 64, 128
- complex64, 128
Arranys can be arranged to be multi-dimensional. In our example of zeros, we could instead have
myarray = np.zeros((3,4,5)) print myarray
which will show
array([[[ 0., 0., 0., 0., 0.], [ 0., 0., 0., 0., 0.], [ 0., 0., 0., 0., 0.], [ 0., 0., 0., 0., 0.]],
[[ 0., 0., 0., 0., 0.], [ 0., 0., 0., 0., 0.], [ 0., 0., 0., 0., 0.], [ 0., 0., 0., 0., 0.]],
[[ 0., 0., 0., 0., 0.], [ 0., 0., 0., 0., 0.], [ 0., 0., 0., 0., 0.], [ 0., 0., 0., 0., 0.]]])
Notice that the array is created with np.zeros(), and the argument is (3,4,5). This means an array of 3x4x5 elements, all zero (float64, by default), grouped as 3 elements, each of 4 elements, each of 5 elements.
An array can be reshaped after it is made. The array stays the same way in memory, but the grouping changes.
myarray = np.array( [1,3,5,7,11,13] )
makes a linear array of 6 elements, and
myarray.reshape(2,3)
changes its shape, so it will be
array([[ 1, 3, 5], [ 7, 11, 13]])