·
Scientific:
Lawrence Livermore, Los Alamos, Fermi, …
·
Engineering:
NASA, JPL, …
·
Financial:
UBS, JP Morgan Chase, Getco, DRW, …
·
Movie
animation (ILM), weather forecasts (NOAA), hydrology models (SFWMD), GIS (ESRI),
NSA, …
Three primary packages
·
NumPy: efficient matrix
processing and numeric libraries
·
SciPy: adds additional numeric libs, statistics, tools
·
matplotlib: 2D plotting tools for rendering NumPy/SciPy results
Other popular packages
·
Parallel
computation: pypar (MPI, NumPy, openmpi),
pp
(SMP), pypvm (PVM), pyMPI
·
Graphics:
Maya,
Blender,
OpenGL
·
Visualization:
VPython, VTK
·
Compiled
code linkage: SWIG, F2PY, Cython
(PyRex), Weave
·
IPython shell (MATLAB-like), BioPython, ScientificPython, cluster computing, …
·
Extends
Python with high-performance vector/matrix tools
·
Python
+ NumPy = free, open source alternative to MATLAB
·
Effieciency of NumPy arrays + flexibility, power, and libs
of Python
·
Numeric
processing, + GUIs, networking, databases, sys admin, text, Web, …
·
Also
being used as an alternative to FORTRAN (no, really)
From NumPy’s example pages…
>>> import numpy
as np
# many ways to create
arrays
>>> x = np.array([[1, 2, 3], [4, 5,
6]], np.int32)
>>> type(x)
<type 'numpy.ndarray'>
>>> x.shape
(2, 3)
>>> x.dtype
dtype('int32')
>>> np.array([1, 2, 3], dtype='f')
array([ 1., 2.,
3.], dtype=float32)
>>> np.indices((3,3))
array([[[0, 0, 0],
[1, 1, 1], [2, 2, 2]], [[0, 1, 2], [0, 1, 2], [0, 1, 2]]])
# plus pairwise,
vector-wide operations and expressions
>>> a = np.array((1, 2))
>>> a * 3.
array([3., 6.])
>>> a = np.array([1, 2, 3, 4])
>>> b = np.array([2, 3, 4, 5])
>>> a + b
array([3, 5, 7,
9])
See also:
Matrix
code in the core Python language (after you’ve learned about loops and
comprehensions!):
Extras\Code\Misc\matrix-code.py
As a
rule, NumPy supports arrays which are much more efficient
in space and speed for larger data sets
·
Builds
on NumPy base to add additional libraries and tools
·
Numerical
integration, optimization, statistics, interpolation, …
·
Includes
Weave, a tool for including C/C++ code in Python scripts
·
A
central “clearinghouse” for other scientific tools: IPython
shell, …
From SciPy’s example pages…
# Bessel functions, circular drum head vibrational modes
>>> from scipy import *
>>> from scipy.special import jn, jn_zeros
>>>
>>> def drumhead_height(n, k, distance, angle, t):
... nth_zero = jn_zeros(n, k)
... return cos(t)*cos(n*angle)*jn(n, distance*nth_zero)
...
>>> theta =
r_[0:2*pi:50j]
>>> radius =
r_[0:1:50j]
>>>
>>> x = array([r*cos(theta) for r in radius])
>>> y = array([r*sin(theta)
for r in radius])
>>> z = array([drumhead_height(1, 1, r, theta, 0.5) for r in radius])
·
http://matplotlib.sourceforge.net/
·
A
popular Python 2D plotting library
·
Can
be used in python scripts, the python and IPython
shell (like MATLAB, Mathematica)
·
Also
supports web servers and 6 GUI toolkits for rendering
From matplotlib’s example pages…
# histogram plotting demo,
one of many at the web site!
import numpy as np
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt
mu, sigma =
100, 15
x = mu + sigma*np.random.randn(10000)
# the histogram of the
data
n, bins,
patches = plt.hist(x, 50, normed=1,
facecolor='green', alpha=0.75)
# add a 'best fit' line
y = mlab.normpdf( bins, mu, sigma)
l = plt.plot(bins, y, 'r--', linewidth=1)
plt.xlabel('Smarts')
plt.ylabel('Probability')
plt.title(r'$\mathrm{Histogram\
of\ IQ:}\ \mu=100,\ \sigma=15$')
plt.axis([40, 160, 0,
0.03])
plt.grid(True)
plt.show()
Google is your friend…
search the web for related and up-to-date
links, examples, documentation, downloads