Commits

Mark Lavin committed a9558e4

Final day slides.

Comments (0)

Files changed (6)

+"""
+Parsing xml data from GeoNames
+http://www.geonames.org/export/web-services.html
+"""
+
+import os
+import urllib2
+
+from lxml import etree
+
+
+def save_country_info(filename):
+    url = 'http://api.geonames.org/countryInfo?username=demo'
+    try:
+        response = urllib2.urlopen(url, timeout=10)
+    except urllib2.HTTPError as e:
+        print u'HTTPError getting GeoNames data: %s' % e
+    except urllib2.URLError as e:
+        print u'URLError getting GeoNames data: %s' % e
+    else:
+        with open(filename, 'w') as f:
+            f.write(response.read())
+
+
+def parse_country_info(filename):
+    with open(filename) as f:
+        tree = etree.parse(f)
+    return tree
+
+
+if __name__ == '__main__':
+    cache_file = 'geonames.xml'
+    if not os.path.exists(cache_file):
+        save_country_info(cache_file)
+    tree = parse_country_info(cache_file)
+    root = tree.getroot()
+    countries = root.xpath('//country[population>1000000]')
+    for country in countries:
+        name = country.findtext('countryName')
+        population = country.findtext('population')
+        print u'%s - Population %d' % (name, int(population))
+"""
+Mandelbrot fractal using PIL (Python)
+
+http://code.activestate.com/recipes/577111-mandelbrot-fractal-using-pil/
+"""
+
+from PIL import Image
+# drawing area (xa < xb and ya < yb)
+xa = -2.0
+xb = 1.0
+ya = -1.5
+yb = 1.5
+maxIt = 256 # iterations
+# image size
+imgx = 512
+imgy = 512
+image = Image.new("RGB", (imgx, imgy))
+
+for y in range(imgy):
+    cy = y * (yb - ya) / (imgy - 1)  + ya
+    for x in range(imgx):
+        cx = x * (xb - xa) / (imgx - 1) + xa
+        c = complex(cx, cy)
+        z = 0
+        for i in range(maxIt):
+            if abs(z) > 2.0: break 
+            z = z * z + c 
+        r = i % 4 * 64
+        g = i % 8 * 32
+        b = i % 16 * 16
+        image.putpixel((x, y), b * 65536 + g * 256 + r)
+
+image.save("mandel.png", "PNG")
+from scipy import array
+from scipy.stats import linregress
+
+from geonames import parse_country_info
+
+
+def get_country_data(country):
+    size = country.findtext('areaInSqKm')
+    population = country.findtext('population')
+    if size and population:
+        return size, population
+    else:
+        return None, None
+
+def parse_pop_size_data():
+    tree = parse_country_info('geonames.xml')
+    root = tree.getroot()
+    data = map(get_country_data, root.findall('country'))
+    data = array(filter(lambda x: x[0] and x[1], data), dtype=float)
+    data.sort()
+    size = data[:,0]
+    population = data[:,1]
+    return (size, population)
+
+
+if __name__ == '__main__':
+    (a_s, b_s, r, tt, stderr) = linregress(*parse_pop_size_data())
+    print 'Regression: a=%.2f b=%.2f, r=%.2f, std error= %.3f' % (a_s, b_s, r, stderr)

code/regressplot.py

+from matplotlib import pylab
+from scipy import polyval
+from scipy.stats import linregress
+
+from regress import parse_pop_size_data
+
+
+size, population = parse_pop_size_data()
+(a_s, b_s, r, tt, stderr) = linregress(size, population)
+line = polyval([a_s, b_s], size)
+
+pylab.title('Linear Regression Example')
+pylab.plot(size, population, 'r.', size, line, 'k')
+pylab.xlabel('Area in sqKm')
+pylab.ylabel('Population')
+pylab.legend(['data', 'regression'])
+pylab.show()

lectures/seven.rst

 Python Packaging
 ----------------------------------------
 
+Python packaging is a messy subject that is under going a bit of a
+make over right now. By packaging I mean a system to manage Python
+libraries on a given system.
 
-PyPi
+- Installation/Upgrading/Removal
+- Managing Dependencies
+- Listing Currently Installed Packages
+- Searching for New Packages
+
+
+Packaging Solution - pip/virtualenv
 ----------------------------------------
 
+Just use ``pip`` to install Python packages http://pip.openplans.org/.
+
+For more complex environments use ``virtualenv`` to manage multiple
+Python environments. http://virtualenv.openplans.org/
+
+
+The Python Package Index (PyPi)
+----------------------------------------
+
+Also (or formerly known) as the Cheeseshop, it is a central repository of Python projects.
+When you install a package by name via ``pip`` this is where it comes from. If you are looking
+for a particular package this is where you can search to find a suitable one.
+
+See them at http://pypi.python.org/pypi
+
 
 lxml
 ----------------------------------------
 
 lxml is a Python binding for the libxml2 and libxslt C libraries.
 It provides a Pythonic  API for handling xml files and it is very fast.
+Unlike the standard lib ``xml`` it supports XPath expressions and XSLT.
 lxml can also handle HTML.
 
 
-lxml Example
+lxml Example (geonames.py)
 ----------------------------------------
 
+.. literalinclude:: /code/geonames.py
+    :lines: 1-9
+
 
 PIL (Python Image Library)
 ----------------------------------------
 
+PIL provides image processing for Python. This includes reading and writing
+images, type conversions, and image manipulation. Along with this set of
+operations it provides a clean interface for handling images.
 
-PIL Example
+
+PIL Example (mandel.py)
 ----------------------------------------
 
+.. literalinclude:: /code/mandel.py
+    :lines: 1-7
+
 
 NumPy/SciPy
 ----------------------------------------
 
-NumPy is a package for handling array based data. It adds vector operations
-on top of standard Python lists.
+NumPy is a package for handling array based data. It adds vector and matrix
+operations on top of standard Python lists.
 
 SciPy is built on top of NumPy. It provides scientific computational tools
 for statistics, optimization, numerical integration, linear algebra,
 ----------------------------------------
 
 If you use Matlab then I would recommend reading this page on comparing
-NumPy to Matlab: http://www.scipy.org/NumPy_for_Matlab_Users
+NumPy to Matlab: 
+
+http://www.scipy.org/NumPy_for_Matlab_Users
+
+
+Creating NumPy Arrays
+----------------------------------------
+
+``ndarray`` is the basic array type provided by NumPy. There a number of ways of
+creating them. 
+
+.. code-block:: python
+
+    import numpy
+    a = numpy.array([1, 2, 3]) # 1-dimensional
+    b = numpy.array([[1, 2, 3], [4, 5, 6]]) # 2-dimensional
+    zero = numpy.zeros((3, 3))
+    one = numpy.ones((2, 3, 4))
+    even = numpy.arange(2, 20, 2)
+    unit = numpy.linspace(0, 1, 10)
+
+
+Using NumPy Arrays
+----------------------------------------
+
+Arithmetic operators on arrays apply elementwise and create a new array with the result.
+
+.. code-block:: python
+
+    import numpy
+    x = numpy.arange(4)
+    y = numpy.arange(4)
+    x + y
+    x*2
+    x**2
+    x*y
+    numpy.dot(x, y)
+
+
+Array Slicing
+----------------------------------------
+
+.. code-block:: python
+    
+    import numpy
+    x = numpy.arange(20).reshape(4, 5)
+    x[1, 1]
+    x[:, 2]    
+    y = x.reshape(2, 2, 5)
+    y[:, :, 1]
+    y[..., 1]
+
+
+SciPy Modules
+----------------------------------------
+
+- Clustering package (scipy.cluster)
+- Constants (scipy.constants)
+- Fourier transforms (scipy.fftpack)
+- Integration and ODEs (scipy.integrate)
+- Interpolation (scipy.interpolate)
+- Input and output (scipy.io)
+- Linear algebra (scipy.linalg)
+- Maximum entropy models (scipy.maxentropy)
+- Miscellaneous routines (scipy.misc)
+- Multi-dimensional image processing (scipy.ndimage)
+- Orthogonal distance regression (scipy.odr)
+- Optimization and root finding (scipy.optimize)
+
+
+SciPy Modules (cont.)
+----------------------------------------
+
+- Signal processing (scipy.signal)
+- Sparse matrices (scipy.sparse)
+- Sparse linear algebra (scipy.sparse.linalg)
+- Spatial algorithms and data structures (scipy.spatial)
+- Distance computations (scipy.spatial.distance)
+- Special functions (scipy.special)
+- Statistical functions (scipy.stats)
+- C/C++ integration (scipy.weave)
+
+
+SciPy Cookbook
+-------------------------------------------------
+
+.. epigraph::
+
+    This page hosts "recipes", or worked examples of commonly-done tasks. Some are introductory in nature, while others are quite advanced (these are at the bottom of the page). We encourage new users to post recipes even for simple tasks that are not yet represented here. Our goal is an easy learning experience for new users. Some of these recipes may be incorporated into tutorials in the future.
+
+    -- http://www.scipy.org/Cookbook
+
+
+SciPy Regression Example (regress.py)
+----------------------------------------
+
+.. literalinclude:: /code/regress.py
+    :lines: 1-7
+
+
+Matplotlib
+----------------------------------------
+
+Matplotlib is a 2D plotting library. It makes use of NumPy arrays for large data sets
+so it plays well with NumPy and SciPy. It also supports using LaTex for figure titles and text.
+
+
+Simple Plotting Example (regressplot.py)
+----------------------------------------
+
+.. literalinclude:: /code/regressplot.py
+    :lines: 1-7
 
 
 .. header:: 

slides/Spring2011/seven.pdf

Binary file added.
+%PDF-1.4
+%���� ReportLab Generated PDF document http://www.reportlab.com
+1 0 obj
+<< /F1 2 0 R
+ /F2 3 0 R
+ /F3 6 0 R
+ /F4 13 0 R
+ /F5 14 0 R >>
+endobj
+2 0 obj
+<< /BaseFont /Helvetica
+ /Encoding /WinAnsiEncoding
+ /Name /F1
+ /Subtype /Type1
+ /Type /Font >>
+endobj
+3 0 obj
+<< /BaseFont /Helvetica-Bold
+ /Encoding /WinAnsiEncoding
+ /Name /F2
+ /Subtype /Type1
+ /Type /Font >>
+endobj
+4 0 obj
+<< /Contents 54 0 R
+ /MediaBox [ 0
+ 0
+ 453.5433
+ 255.1181 ]
+ /Parent 53 0 R
+ /Resources << /Font 1 0 R
+ /ProcSet [ /PDF
+ /Text
+ /ImageB
+ /ImageC
+ /ImageI ] >>
+ /Rotate 0
+ /Trans <<  >>
+ /Type /Page >>
+endobj
+5 0 obj
+<< /Contents 55 0 R
+ /MediaBox [ 0
+ 0
+ 453.5433
+ 255.1181 ]
+ /Parent 53 0 R
+ /Resources << /Font 1 0 R
+ /ProcSet [ /PDF
+ /Text
+ /ImageB
+ /ImageC
+ /ImageI ] >>
+ /Rotate 0
+ /Trans <<  >>
+ /Type /Page >>
+endobj
+6 0 obj
+<< /BaseFont /Courier
+ /Encoding /WinAnsiEncoding
+ /Name /F3
+ /Subtype /Type1
+ /Type /Font >>
+endobj
+7 0 obj
+<< /A << /S /URI
+ /Type /Action
+ /URI (http://pip.openplans.org/) >>
+ /Border [ 0
+ 0
+ 0 ]
+ /Rect [ 197.7303
+ 191.1449
+ 283.5623
+ 203.1449 ]
+ /Subtype /Link
+ /Type /Annot >>
+endobj
+8 0 obj
+<< /A << /S /URI
+ /Type /Action
+ /URI (http://virtualenv.openplans.org/) >>
+ /Border [ 0
+ 0
+ 0 ]
+ /Rect [ 51.35433
+ 161.1449
+ 160.7463
+ 173.1449 ]
+ /Subtype /Link
+ /Type /Annot >>
+endobj
+9 0 obj
+<< /Annots [ 7 0 R
+ 8 0 R ]
+ /Contents 56 0 R
+ /MediaBox [ 0
+ 0
+ 453.5433
+ 255.1181 ]
+ /Parent 53 0 R
+ /Resources << /Font 1 0 R
+ /ProcSet [ /PDF
+ /Text
+ /ImageB
+ /ImageC
+ /ImageI ] >>
+ /Rotate 0
+ /Trans <<  >>
+ /Type /Page >>
+endobj
+10 0 obj
+<< /A << /S /URI
+ /Type /Action
+ /URI (http://pypi.python.org/pypi) >>
+ /Border [ 0
+ 0
+ 0 ]
+ /Rect [ 96.71433
+ 149.1449
+ 188.3223
+ 161.1449 ]
+ /Subtype /Link
+ /Type /Annot >>
+endobj
+11 0 obj
+<< /Annots [ 10 0 R ]
+ /Contents 57 0 R
+ /MediaBox [ 0
+ 0
+ 453.5433
+ 255.1181 ]
+ /Parent 53 0 R
+ /Resources << /Font 1 0 R
+ /ProcSet [ /PDF
+ /Text
+ /ImageB
+ /ImageC
+ /ImageI ] >>
+ /Rotate 0
+ /Trans <<  >>
+ /Type /Page >>
+endobj
+12 0 obj
+<< /Contents 58 0 R
+ /MediaBox [ 0
+ 0
+ 453.5433
+ 255.1181 ]
+ /Parent 53 0 R
+ /Resources << /Font 1 0 R
+ /ProcSet [ /PDF
+ /Text
+ /ImageB
+ /ImageC
+ /ImageI ] >>
+ /Rotate 0
+ /Trans <<  >>
+ /Type /Page >>
+endobj
+13 0 obj
+<< /BaseFont /Courier-Oblique
+ /Encoding /WinAnsiEncoding
+ /Name /F4
+ /Subtype /Type1
+ /Type /Font >>
+endobj
+14 0 obj
+<< /BaseFont /Courier-Bold
+ /Encoding /WinAnsiEncoding
+ /Name /F5
+ /Subtype /Type1
+ /Type /Font >>
+endobj
+15 0 obj
+<< /Contents 59 0 R
+ /MediaBox [ 0
+ 0
+ 453.5433
+ 255.1181 ]
+ /Parent 53 0 R
+ /Resources << /Font 1 0 R
+ /ProcSet [ /PDF
+ /Text
+ /ImageB
+ /ImageC
+ /ImageI ] >>
+ /Rotate 0
+ /Trans <<  >>
+ /Type /Page >>
+endobj
+16 0 obj
+<< /Contents 60 0 R
+ /MediaBox [ 0
+ 0
+ 453.5433
+ 255.1181 ]
+ /Parent 53 0 R
+ /Resources << /Font 1 0 R
+ /ProcSet [ /PDF
+ /Text
+ /ImageB
+ /ImageC
+ /ImageI ] >>
+ /Rotate 0
+ /Trans <<  >>
+ /Type /Page >>
+endobj
+17 0 obj
+<< /Contents 61 0 R
+ /MediaBox [ 0
+ 0
+ 453.5433
+ 255.1181 ]
+ /Parent 53 0 R
+ /Resources << /Font 1 0 R
+ /ProcSet [ /PDF
+ /Text
+ /ImageB
+ /ImageC
+ /ImageI ] >>
+ /Rotate 0
+ /Trans <<  >>
+ /Type /Page >>
+endobj
+18 0 obj
+<< /Contents 62 0 R
+ /MediaBox [ 0
+ 0
+ 453.5433
+ 255.1181 ]
+ /Parent 53 0 R
+ /Resources << /Font 1 0 R
+ /ProcSet [ /PDF
+ /Text
+ /ImageB
+ /ImageC
+ /ImageI ] >>
+ /Rotate 0
+ /Trans <<  >>
+ /Type /Page >>
+endobj
+19 0 obj
+<< /A << /S /URI
+ /Type /Action
+ /URI (http://www.scipy.org/NumPy_for_Matlab_Users) >>
+ /Border [ 0
+ 0
+ 0 ]
+ /Rect [ 51.35433
+ 173.1449
+ 402.189
+ 185.1449 ]
+ /Subtype /Link
+ /Type /Annot >>
+endobj
+20 0 obj
+<< /Annots [ 19 0 R ]
+ /Contents 63 0 R
+ /MediaBox [ 0
+ 0
+ 453.5433
+ 255.1181 ]
+ /Parent 53 0 R
+ /Resources << /Font 1 0 R
+ /ProcSet [ /PDF
+ /Text
+ /ImageB
+ /ImageC
+ /ImageI ] >>
+ /Rotate 0
+ /Trans <<  >>
+ /Type /Page >>
+endobj
+21 0 obj
+<< /Contents 64 0 R
+ /MediaBox [ 0
+ 0
+ 453.5433
+ 255.1181 ]
+ /Parent 53 0 R
+ /Resources << /Font 1 0 R
+ /ProcSet [ /PDF
+ /Text
+ /ImageB
+ /ImageC
+ /ImageI ] >>
+ /Rotate 0
+ /Trans <<  >>
+ /Type /Page >>
+endobj
+22 0 obj
+<< /Contents 65 0 R
+ /MediaBox [ 0
+ 0
+ 453.5433
+ 255.1181 ]
+ /Parent 53 0 R
+ /Resources << /Font 1 0 R
+ /ProcSet [ /PDF
+ /Text
+ /ImageB
+ /ImageC
+ /ImageI ] >>
+ /Rotate 0
+ /Trans <<  >>
+ /Type /Page >>
+endobj
+23 0 obj
+<< /Contents 66 0 R
+ /MediaBox [ 0
+ 0
+ 453.5433
+ 255.1181 ]
+ /Parent 53 0 R
+ /Resources << /Font 1 0 R
+ /ProcSet [ /PDF
+ /Text
+ /ImageB
+ /ImageC
+ /ImageI ] >>
+ /Rotate 0
+ /Trans <<  >>
+ /Type /Page >>
+endobj
+24 0 obj
+<< /Contents 67 0 R
+ /MediaBox [ 0
+ 0
+ 453.5433
+ 255.1181 ]
+ /Parent 53 0 R
+ /Resources << /Font 1 0 R
+ /ProcSet [ /PDF
+ /Text
+ /ImageB
+ /ImageC
+ /ImageI ] >>
+ /Rotate 0
+ /Trans <<  >>
+ /Type /Page >>
+endobj
+25 0 obj
+<< /Contents 68 0 R
+ /MediaBox [ 0
+ 0
+ 453.5433
+ 255.1181 ]
+ /Parent 53 0 R
+ /Resources << /Font 1 0 R
+ /ProcSet [ /PDF
+ /Text
+ /ImageB
+ /ImageC
+ /ImageI ] >>
+ /Rotate 0
+ /Trans <<  >>
+ /Type /Page >>
+endobj
+26 0 obj
+<< /A << /S /URI
+ /Type /Action
+ /URI (http://www.scipy.org/Cookbook) >>
+ /Border [ 0
+ 0
+ 0 ]
+ /Rect [ 292.373
+ 119.1449
+ 402.189
+ 131.1449 ]
+ /Subtype /Link
+ /Type /Annot >>
+endobj
+27 0 obj
+<< /Annots [ 26 0 R ]
+ /Contents 69 0 R
+ /MediaBox [ 0
+ 0
+ 453.5433
+ 255.1181 ]
+ /Parent 53 0 R
+ /Resources << /Font 1 0 R
+ /ProcSet [ /PDF
+ /Text
+ /ImageB
+ /ImageC
+ /ImageI ] >>
+ /Rotate 0
+ /Trans <<  >>
+ /Type /Page >>
+endobj
+28 0 obj
+<< /Contents 70 0 R
+ /MediaBox [ 0
+ 0
+ 453.5433
+ 255.1181 ]
+ /Parent 53 0 R
+ /Resources << /Font 1 0 R
+ /ProcSet [ /PDF
+ /Text
+ /ImageB
+ /ImageC
+ /ImageI ] >>
+ /Rotate 0
+ /Trans <<  >>
+ /Type /Page >>
+endobj
+29 0 obj
+<< /Contents 71 0 R
+ /MediaBox [ 0
+ 0
+ 453.5433
+ 255.1181 ]
+ /Parent 53 0 R
+ /Resources << /Font 1 0 R
+ /ProcSet [ /PDF
+ /Text
+ /ImageB
+ /ImageC
+ /ImageI ] >>
+ /Rotate 0
+ /Trans <<  >>
+ /Type /Page >>
+endobj
+30 0 obj
+<< /Contents 72 0 R
+ /MediaBox [ 0
+ 0
+ 453.5433
+ 255.1181 ]
+ /Parent 53 0 R
+ /Resources << /Font 1 0 R
+ /ProcSet [ /PDF
+ /Text
+ /ImageB
+ /ImageC
+ /ImageI ] >>
+ /Rotate 0
+ /Trans <<  >>
+ /Type /Page >>
+endobj
+31 0 obj
+<< /Outlines 33 0 R
+ /PageLabels 73 0 R
+ /PageMode /UseNone
+ /Pages 53 0 R
+ /Type /Catalog >>
+endobj
+32 0 obj
+<< /Author ()
+ /CreationDate (D:20000101000000+00'00')
+ /Creator (\(unspecified\))
+ /Keywords ()
+ /Producer (ReportLab PDF Library - www.reportlab.com)
+ /Subject (\(unspecified\))
+ /Title () >>
+endobj
+33 0 obj
+<< /Count 19
+ /First 34 0 R
+ /Last 52 0 R
+ /Type /Outlines >>
+endobj
+34 0 obj
+<< /Dest [ 4 0 R
+ /XYZ
+ 51.35433
+ 222.9449
+ 0 ]
+ /Next 35 0 R
+ /Parent 33 0 R
+ /Title (Common Third Party Libraries) >>
+endobj
+35 0 obj
+<< /Dest [ 5 0 R
+ /XYZ
+ 51.35433
+ 222.9449
+ 0 ]
+ /Next 36 0 R
+ /Parent 33 0 R
+ /Prev 34 0 R
+ /Title (Python Packaging) >>
+endobj
+36 0 obj
+<< /Dest [ 9 0 R
+ /XYZ
+ 51.35433
+ 222.9449
+ 0 ]
+ /Next 37 0 R
+ /Parent 33 0 R
+ /Prev 35 0 R
+ /Title (Packaging Solution - pip/virtualenv) >>
+endobj
+37 0 obj
+<< /Dest [ 11 0 R
+ /XYZ
+ 51.35433
+ 222.9449
+ 0 ]
+ /Next 38 0 R
+ /Parent 33 0 R
+ /Prev 36 0 R
+ /Title (The Python Package Index \(PyPi\)) >>
+endobj
+38 0 obj
+<< /Dest [ 12 0 R
+ /XYZ
+ 51.35433
+ 222.9449
+ 0 ]
+ /Next 39 0 R
+ /Parent 33 0 R
+ /Prev 37 0 R
+ /Title (lxml) >>
+endobj
+39 0 obj
+<< /Dest [ 15 0 R
+ /XYZ
+ 51.35433
+ 222.9449
+ 0 ]
+ /Next 40 0 R
+ /Parent 33 0 R
+ /Prev 38 0 R
+ /Title (lxml Example \(geonames.py\)) >>
+endobj
+40 0 obj
+<< /Dest [ 16 0 R
+ /XYZ
+ 51.35433
+ 222.9449
+ 0 ]
+ /Next 41 0 R
+ /Parent 33 0 R
+ /Prev 39 0 R
+ /Title (PIL \(Python Image Library\)) >>
+endobj
+41 0 obj
+<< /Dest [ 17 0 R
+ /XYZ
+ 51.35433
+ 222.9449
+ 0 ]
+ /Next 42 0 R
+ /Parent 33 0 R
+ /Prev 40 0 R
+ /Title (PIL Example \(mandel.py\)) >>
+endobj
+42 0 obj
+<< /Dest [ 18 0 R
+ /XYZ
+ 51.35433
+ 222.9449
+ 0 ]
+ /Next 43 0 R
+ /Parent 33 0 R
+ /Prev 41 0 R
+ /Title (NumPy/SciPy) >>
+endobj
+43 0 obj
+<< /Dest [ 20 0 R
+ /XYZ
+ 51.35433
+ 222.9449
+ 0 ]
+ /Next 44 0 R
+ /Parent 33 0 R
+ /Prev 42 0 R
+ /Title (NumPy For Matlab Users) >>
+endobj
+44 0 obj
+<< /Dest [ 21 0 R
+ /XYZ
+ 51.35433
+ 222.9449
+ 0 ]
+ /Next 45 0 R
+ /Parent 33 0 R
+ /Prev 43 0 R
+ /Title (Creating NumPy Arrays) >>
+endobj
+45 0 obj
+<< /Dest [ 22 0 R
+ /XYZ
+ 51.35433
+ 222.9449
+ 0 ]
+ /Next 46 0 R
+ /Parent 33 0 R
+ /Prev 44 0 R
+ /Title (Using NumPy Arrays) >>
+endobj
+46 0 obj
+<< /Dest [ 23 0 R
+ /XYZ
+ 51.35433
+ 222.9449
+ 0 ]
+ /Next 47 0 R
+ /Parent 33 0 R
+ /Prev 45 0 R
+ /Title (Array Slicing) >>
+endobj
+47 0 obj
+<< /Dest [ 24 0 R
+ /XYZ
+ 51.35433
+ 222.9449
+ 0 ]
+ /Next 48 0 R
+ /Parent 33 0 R
+ /Prev 46 0 R
+ /Title (SciPy Modules) >>
+endobj
+48 0 obj
+<< /Dest [ 25 0 R
+ /XYZ
+ 51.35433
+ 222.9449
+ 0 ]
+ /Next 49 0 R
+ /Parent 33 0 R
+ /Prev 47 0 R
+ /Title (SciPy Modules \(cont.\)) >>
+endobj
+49 0 obj
+<< /Dest [ 27 0 R
+ /XYZ
+ 51.35433
+ 222.9449
+ 0 ]
+ /Next 50 0 R
+ /Parent 33 0 R
+ /Prev 48 0 R
+ /Title (SciPy Cookbook) >>
+endobj
+50 0 obj
+<< /Dest [ 28 0 R
+ /XYZ
+ 51.35433
+ 222.9449
+ 0 ]
+ /Next 51 0 R
+ /Parent 33 0 R
+ /Prev 49 0 R
+ /Title (SciPy Regression Example \(regress.py\)) >>
+endobj
+51 0 obj
+<< /Dest [ 29 0 R
+ /XYZ
+ 51.35433
+ 222.9449
+ 0 ]
+ /Next 52 0 R
+ /Parent 33 0 R
+ /Prev 50 0 R
+ /Title (Matplotlib) >>
+endobj
+52 0 obj
+<< /Dest [ 30 0 R
+ /XYZ
+ 51.35433
+ 222.9449
+ 0 ]
+ /Parent 33 0 R
+ /Prev 51 0 R
+ /Title (Simple Plotting Example \(regressplot.py\)) >>
+endobj
+53 0 obj
+<< /Count 19
+ /Kids [ 4 0 R
+ 5 0 R
+ 9 0 R
+ 11 0 R
+ 12 0 R
+ 15 0 R
+ 16 0 R
+ 17 0 R
+ 18 0 R
+ 20 0 R
+ 21 0 R
+ 22 0 R
+ 23 0 R
+ 24 0 R
+ 25 0 R
+ 27 0 R
+ 28 0 R
+ 29 0 R
+ 30 0 R ]
+ /Type /Pages >>
+endobj
+54 0 obj
+<< /Length 2125 >>
+stream
+1 0 0 1 0 0 cm  BT /F1 12 Tf 14.4 TL ET
+q
+1 0 0 1 51.35433 206.1449 cm
+q
+BT 1 0 0 1 0 2.8 Tm 16.8 TL /F2 14 Tf 0 0 0 rg (Common Third Party Libraries) Tj T* ET
+Q
+Q
+q
+1 0 0 1 51.35433 200.1449 cm
+Q
+q
+1 0 0 1 51.35433 200.1449 cm
+Q
+q
+1 0 0 1 51.35433 188.1449 cm
+0 0 0 rg
+BT /F1 10 Tf 12 TL ET
+q
+1 0 0 1 6 -3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL 11.2 0 Td (\177) Tj T* -11.2 0 Td ET
+Q
+Q
+q
+1 0 0 1 23 -3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL (lxml) Tj T* ET
+Q
+Q
+q
+Q
+Q
+q
+1 0 0 1 51.35433 188.1449 cm
+Q
+q
+1 0 0 1 51.35433 176.1449 cm
+0 0 0 rg
+BT /F1 10 Tf 12 TL ET
+q
+1 0 0 1 6 -3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL 11.2 0 Td (\177) Tj T* -11.2 0 Td ET
+Q
+Q
+q
+1 0 0 1 23 -3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL (PIL) Tj T* ET
+Q
+Q
+q
+Q
+Q
+q
+1 0 0 1 51.35433 176.1449 cm
+Q
+q
+1 0 0 1 51.35433 164.1449 cm
+0 0 0 rg
+BT /F1 10 Tf 12 TL ET
+q
+1 0 0 1 6 -3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL 11.2 0 Td (\177) Tj T* -11.2 0 Td ET
+Q
+Q
+q
+1 0 0 1 23 -3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL (NumPy) Tj T* ET
+Q
+Q
+q
+Q
+Q
+q
+1 0 0 1 51.35433 164.1449 cm
+Q
+q
+1 0 0 1 51.35433 152.1449 cm
+0 0 0 rg
+BT /F1 10 Tf 12 TL ET
+q
+1 0 0 1 6 -3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL 11.2 0 Td (\177) Tj T* -11.2 0 Td ET
+Q
+Q
+q
+1 0 0 1 23 -3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL (SciPy) Tj T* ET
+Q
+Q
+q
+Q
+Q
+q
+1 0 0 1 51.35433 152.1449 cm
+Q
+q
+1 0 0 1 51.35433 140.1449 cm
+0 0 0 rg
+BT /F1 10 Tf 12 TL ET
+q
+1 0 0 1 6 -3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL 11.2 0 Td (\177) Tj T* -11.2 0 Td ET
+Q
+Q
+q
+1 0 0 1 23 -3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL (matplotlib) Tj T* ET
+Q
+Q
+q
+Q
+Q
+q
+1 0 0 1 51.35433 140.1449 cm
+Q
+q
+1 0 0 1 51.35433 140.1449 cm
+Q
+q
+1 0 0 1 0 243.1181 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL 170.9637 0 Td (MA792K Spring 2011 Lecture 7) Tj T* -170.9637 0 Td ET
+Q
+Q
+q
+1 0 0 1 0 0 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL 193.1437 0 Td (\251 Mark Lavin 2011) Tj T* -193.1437 0 Td ET
+Q
+Q
+ 
+endstream
+endobj
+55 0 obj
+<< /Length 2178 >>
+stream
+1 0 0 1 0 0 cm  BT /F1 12 Tf 14.4 TL ET
+q
+1 0 0 1 51.35433 206.1449 cm
+q
+BT 1 0 0 1 0 2.8 Tm 16.8 TL /F2 14 Tf 0 0 0 rg (Python Packaging) Tj T* ET
+Q
+Q
+q
+1 0 0 1 51.35433 176.1449 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 16 Tm /F1 8 Tf 12 TL 1.704591 Tw (Python packaging is a messy subject that is under going a bit of a make over right now. By) Tj T* 0 Tw (packaging I mean a system to manage Python libraries on a given system.) Tj T* ET
+Q
+Q
+q
+1 0 0 1 51.35433 176.1449 cm
+Q
+q
+1 0 0 1 51.35433 176.1449 cm
+Q
+q
+1 0 0 1 51.35433 164.1449 cm
+0 0 0 rg
+BT /F1 10 Tf 12 TL ET
+q
+1 0 0 1 6 -3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL 11.2 0 Td (\177) Tj T* -11.2 0 Td ET
+Q
+Q
+q
+1 0 0 1 23 -3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL (Installation/Upgrading/Removal) Tj T* ET
+Q
+Q
+q
+Q
+Q
+q
+1 0 0 1 51.35433 164.1449 cm
+Q
+q
+1 0 0 1 51.35433 152.1449 cm
+0 0 0 rg
+BT /F1 10 Tf 12 TL ET
+q
+1 0 0 1 6 -3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL 11.2 0 Td (\177) Tj T* -11.2 0 Td ET
+Q
+Q
+q
+1 0 0 1 23 -3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL (Managing Dependencies) Tj T* ET
+Q
+Q
+q
+Q
+Q
+q
+1 0 0 1 51.35433 152.1449 cm
+Q
+q
+1 0 0 1 51.35433 140.1449 cm
+0 0 0 rg
+BT /F1 10 Tf 12 TL ET
+q
+1 0 0 1 6 -3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL 11.2 0 Td (\177) Tj T* -11.2 0 Td ET
+Q
+Q
+q
+1 0 0 1 23 -3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL (Listing Currently Installed Packages) Tj T* ET
+Q
+Q
+q
+Q
+Q
+q
+1 0 0 1 51.35433 140.1449 cm
+Q
+q
+1 0 0 1 51.35433 128.1449 cm
+0 0 0 rg
+BT /F1 10 Tf 12 TL ET
+q
+1 0 0 1 6 -3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL 11.2 0 Td (\177) Tj T* -11.2 0 Td ET
+Q
+Q
+q
+1 0 0 1 23 -3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL (Searching for New Packages) Tj T* ET
+Q
+Q
+q
+Q
+Q
+q
+1 0 0 1 51.35433 128.1449 cm
+Q
+q
+1 0 0 1 51.35433 128.1449 cm
+Q
+q
+1 0 0 1 0 243.1181 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL 170.9637 0 Td (MA792K Spring 2011 Lecture 7) Tj T* -170.9637 0 Td ET
+Q
+Q
+q
+1 0 0 1 0 0 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL 193.1437 0 Td (\251 Mark Lavin 2011) Tj T* -193.1437 0 Td ET
+Q
+Q
+ 
+endstream
+endobj
+56 0 obj
+<< /Length 1012 >>
+stream
+1 0 0 1 0 0 cm  BT /F1 12 Tf 14.4 TL ET
+q
+1 0 0 1 51.35433 206.1449 cm
+q
+BT 1 0 0 1 0 2.8 Tm 16.8 TL /F2 14 Tf 0 0 0 rg (Packaging Solution - pip/virtualenv) Tj T* ET
+Q
+Q
+q
+1 0 0 1 51.35433 188.1449 cm
+q
+BT 1 0 0 1 0 4 Tm 12 TL /F1 8 Tf 0 0 0 rg (Just use ) Tj /F3 8 Tf (pip ) Tj /F1 8 Tf (to install Python packages ) Tj 0 0 .501961 rg (http://pip.openplans.org/) Tj 0 0 0 rg (.) Tj T* ET
+Q
+Q
+q
+1 0 0 1 51.35433 158.1449 cm
+q
+BT 1 0 0 1 0 16 Tm 1.881865 Tw 12 TL /F1 8 Tf 0 0 0 rg (For more complex environments use ) Tj /F3 8 Tf (virtualenv ) Tj /F1 8 Tf (to manage multiple Python environments.) Tj T* 0 Tw 0 0 .501961 rg (http://virtualenv.openplans.org/) Tj T* ET
+Q
+Q
+q
+1 0 0 1 51.35433 158.1449 cm
+Q
+q
+1 0 0 1 0 243.1181 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL 170.9637 0 Td (MA792K Spring 2011 Lecture 7) Tj T* -170.9637 0 Td ET
+Q
+Q
+q
+1 0 0 1 0 0 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL 193.1437 0 Td (\251 Mark Lavin 2011) Tj T* -193.1437 0 Td ET
+Q
+Q
+ 
+endstream
+endobj
+57 0 obj
+<< /Length 1091 >>
+stream
+1 0 0 1 0 0 cm  BT /F1 12 Tf 14.4 TL ET
+q
+1 0 0 1 51.35433 206.1449 cm
+q
+BT 1 0 0 1 0 2.8 Tm 16.8 TL /F2 14 Tf 0 0 0 rg (The Python Package Index \(PyPi\)) Tj T* ET
+Q
+Q
+q
+1 0 0 1 51.35433 164.1449 cm
+q
+BT 1 0 0 1 0 28 Tm .980443 Tw 12 TL /F1 8 Tf 0 0 0 rg (Also \(or formerly known\) as the Cheeseshop, it is a central repository of Python projects. When) Tj T* 0 Tw 1.635087 Tw (you install a package by name via ) Tj /F3 8 Tf (pip ) Tj /F1 8 Tf (this is where it comes from. If you are looking for a) Tj T* 0 Tw (particular package this is where you can search to find a suitable one.) Tj T* ET
+Q
+Q
+q
+1 0 0 1 51.35433 146.1449 cm
+q
+BT 1 0 0 1 0 4 Tm 12 TL /F1 8 Tf 0 0 0 rg (See them at ) Tj 0 0 .501961 rg (http://pypi.python.org/pypi) Tj T* ET
+Q
+Q
+q
+1 0 0 1 51.35433 146.1449 cm
+Q
+q
+1 0 0 1 0 243.1181 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL 170.9637 0 Td (MA792K Spring 2011 Lecture 7) Tj T* -170.9637 0 Td ET
+Q
+Q
+q
+1 0 0 1 0 0 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL 193.1437 0 Td (\251 Mark Lavin 2011) Tj T* -193.1437 0 Td ET
+Q
+Q
+ 
+endstream
+endobj
+58 0 obj
+<< /Length 875 >>
+stream
+1 0 0 1 0 0 cm  BT /F1 12 Tf 14.4 TL ET
+q
+1 0 0 1 51.35433 206.1449 cm
+q
+BT 1 0 0 1 0 2.8 Tm 16.8 TL /F2 14 Tf 0 0 0 rg (lxml) Tj T* ET
+Q
+Q
+q
+1 0 0 1 51.35433 164.1449 cm
+q
+BT 1 0 0 1 0 28 Tm 1.833097 Tw 12 TL /F1 8 Tf 0 0 0 rg (lxml is a Python binding for the libxml2 and libxslt C libraries. It provides a Pythonic API for) Tj T* 0 Tw .048626 Tw (handling xml files and it is very fast. Unlike the standard lib ) Tj /F3 8 Tf (xml ) Tj /F1 8 Tf (it supports XPath expressions and) Tj T* 0 Tw (XSLT. lxml can also handle HTML.) Tj T* ET
+Q
+Q
+q
+1 0 0 1 51.35433 164.1449 cm
+Q
+q
+1 0 0 1 0 243.1181 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL 170.9637 0 Td (MA792K Spring 2011 Lecture 7) Tj T* -170.9637 0 Td ET
+Q
+Q
+q
+1 0 0 1 0 0 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL 193.1437 0 Td (\251 Mark Lavin 2011) Tj T* -193.1437 0 Td ET
+Q
+Q
+ 
+endstream
+endobj
+59 0 obj
+<< /Length 1290 >>
+stream
+1 0 0 1 0 0 cm  BT /F1 12 Tf 14.4 TL ET
+q
+1 0 0 1 51.35433 206.1449 cm
+q
+BT 1 0 0 1 0 2.8 Tm 16.8 TL /F2 14 Tf 0 0 0 rg (lxml Example \(geonames.py\)) Tj T* ET
+Q
+Q
+q
+1 0 0 1 51.35433 76.94488 cm
+q
+q
+q
+1 0 0 1 6.6 6.6 cm
+q
+.662745 .662745 .662745 RG
+.5 w
+.960784 .960784 .862745 rg
+n -6 -6 349.6346 120 re B*
+Q
+q
+BT 1 0 0 1 0 100 Tm 12 TL /F4 8 Tf .729412 .129412 .129412 rg (""") Tj T* (Parsing xml data from GeoNames) Tj T* (http://www.geonames.org/export/web-services.html) Tj T* (""") Tj /F3 8 Tf 0 0 0 rg  T*  T* /F5 8 Tf 0 .501961 0 rg (import) Tj /F3 8 Tf 0 0 0 rg ( ) Tj /F5 8 Tf 0 0 1 rg (os) Tj /F3 8 Tf 0 0 0 rg  T* /F5 8 Tf 0 .501961 0 rg (import) Tj /F3 8 Tf 0 0 0 rg ( ) Tj /F5 8 Tf 0 0 1 rg (urllib2) Tj /F3 8 Tf 0 0 0 rg  T*  T* /F5 8 Tf 0 .501961 0 rg (from) Tj /F3 8 Tf 0 0 0 rg ( ) Tj /F5 8 Tf 0 0 1 rg (lxml) Tj /F3 8 Tf 0 0 0 rg ( ) Tj /F5 8 Tf 0 .501961 0 rg (import) Tj /F3 8 Tf 0 0 0 rg ( ) Tj (etree) Tj T* ET
+Q
+Q
+Q
+Q
+Q
+q
+1 0 0 1 51.35433 68.94488 cm
+Q
+q
+1 0 0 1 0 243.1181 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL 170.9637 0 Td (MA792K Spring 2011 Lecture 7) Tj T* -170.9637 0 Td ET
+Q
+Q
+q
+1 0 0 1 0 0 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL 193.1437 0 Td (\251 Mark Lavin 2011) Tj T* -193.1437 0 Td ET
+Q
+Q
+ 
+endstream
+endobj
+60 0 obj
+<< /Length 849 >>
+stream
+1 0 0 1 0 0 cm  BT /F1 12 Tf 14.4 TL ET
+q
+1 0 0 1 51.35433 206.1449 cm
+q
+BT 1 0 0 1 0 2.8 Tm 16.8 TL /F2 14 Tf 0 0 0 rg (PIL \(Python Image Library\)) Tj T* ET
+Q
+Q
+q
+1 0 0 1 51.35433 164.1449 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 28 Tm /F1 8 Tf 12 TL 2.854887 Tw (PIL provides image processing for Python. This includes reading and writing images, type) Tj T* 0 Tw .127618 Tw (conversions, and image manipulation. Along with this set of operations it provides a clean interface) Tj T* 0 Tw (for handling images.) Tj T* ET
+Q
+Q
+q
+1 0 0 1 51.35433 164.1449 cm
+Q
+q
+1 0 0 1 0 243.1181 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL 170.9637 0 Td (MA792K Spring 2011 Lecture 7) Tj T* -170.9637 0 Td ET
+Q
+Q
+q
+1 0 0 1 0 0 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL 193.1437 0 Td (\251 Mark Lavin 2011) Tj T* -193.1437 0 Td ET
+Q
+Q
+ 
+endstream
+endobj
+61 0 obj
+<< /Length 1091 >>
+stream
+1 0 0 1 0 0 cm  BT /F1 12 Tf 14.4 TL ET
+q
+1 0 0 1 51.35433 206.1449 cm
+q
+BT 1 0 0 1 0 2.8 Tm 16.8 TL /F2 14 Tf 0 0 0 rg (PIL Example \(mandel.py\)) Tj T* ET
+Q
+Q
+q
+1 0 0 1 51.35433 100.9449 cm
+q
+q
+q
+1 0 0 1 6.6 6.6 cm
+q
+.662745 .662745 .662745 RG
+.5 w
+.960784 .960784 .862745 rg
+n -6 -6 357.6 96 re B*
+Q
+q
+BT 1 0 0 1 0 76 Tm 12 TL /F4 8 Tf .729412 .129412 .129412 rg (""") Tj T* (Mandelbrot fractal using PIL \(Python\)) Tj T*  T* (http://code.activestate.com/recipes/577111-mandelbrot-fractal-using-pil/) Tj T* (""") Tj /F3 8 Tf 0 0 0 rg  T*  T* /F5 8 Tf 0 .501961 0 rg (from) Tj /F3 8 Tf 0 0 0 rg ( ) Tj /F5 8 Tf 0 0 1 rg (PIL) Tj /F3 8 Tf 0 0 0 rg ( ) Tj /F5 8 Tf 0 .501961 0 rg (import) Tj /F3 8 Tf 0 0 0 rg ( ) Tj (Image) Tj T* ET
+Q
+Q
+Q
+Q
+Q
+q
+1 0 0 1 51.35433 92.94488 cm
+Q
+q
+1 0 0 1 0 243.1181 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL 170.9637 0 Td (MA792K Spring 2011 Lecture 7) Tj T* -170.9637 0 Td ET
+Q
+Q
+q
+1 0 0 1 0 0 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL 193.1437 0 Td (\251 Mark Lavin 2011) Tj T* -193.1437 0 Td ET
+Q
+Q
+ 
+endstream
+endobj
+62 0 obj
+<< /Length 1087 >>
+stream
+1 0 0 1 0 0 cm  BT /F1 12 Tf 14.4 TL ET
+q
+1 0 0 1 51.35433 206.1449 cm
+q
+BT 1 0 0 1 0 2.8 Tm 16.8 TL /F2 14 Tf 0 0 0 rg (NumPy/SciPy) Tj T* ET
+Q
+Q
+q
+1 0 0 1 51.35433 176.1449 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 16 Tm /F1 8 Tf 12 TL .365803 Tw (NumPy is a package for handling array based data. It adds vector and matrix operations on top of) Tj T* 0 Tw (standard Python lists.) Tj T* ET
+Q
+Q
+q
+1 0 0 1 51.35433 134.1449 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 28 Tm /F1 8 Tf 12 TL .320189 Tw (SciPy is built on top of NumPy. It provides scientific computational tools for statistics, optimization,) Tj T* 0 Tw 2.030516 Tw (numerical integration, linear algebra, Fourier transforms, signal processing, image processing,) Tj T* 0 Tw (ODE solving, and more.) Tj T* ET
+Q
+Q
+q
+1 0 0 1 51.35433 134.1449 cm
+Q
+q
+1 0 0 1 0 243.1181 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL 170.9637 0 Td (MA792K Spring 2011 Lecture 7) Tj T* -170.9637 0 Td ET
+Q
+Q
+q
+1 0 0 1 0 0 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL 193.1437 0 Td (\251 Mark Lavin 2011) Tj T* -193.1437 0 Td ET
+Q
+Q
+ 
+endstream
+endobj
+63 0 obj
+<< /Length 834 >>
+stream
+1 0 0 1 0 0 cm  BT /F1 12 Tf 14.4 TL ET
+q
+1 0 0 1 51.35433 206.1449 cm
+q
+BT 1 0 0 1 0 2.8 Tm 16.8 TL /F2 14 Tf 0 0 0 rg (NumPy For Matlab Users) Tj T* ET
+Q
+Q
+q
+1 0 0 1 51.35433 188.1449 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL (If you use Matlab then I would recommend reading this page on comparing NumPy to Matlab:) Tj T* ET
+Q
+Q
+q
+1 0 0 1 51.35433 170.1449 cm
+q
+0 0 .501961 rg
+0 0 .501961 RG
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL (http://www.scipy.org/NumPy_for_Matlab_Users) Tj T* ET
+Q
+Q
+q
+1 0 0 1 51.35433 170.1449 cm
+Q
+q
+1 0 0 1 0 243.1181 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL 170.9637 0 Td (MA792K Spring 2011 Lecture 7) Tj T* -170.9637 0 Td ET
+Q
+Q
+q
+1 0 0 1 0 0 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL 193.1437 0 Td (\251 Mark Lavin 2011) Tj T* -193.1437 0 Td ET
+Q
+Q
+ 
+endstream
+endobj
+64 0 obj
+<< /Length 2672 >>
+stream
+1 0 0 1 0 0 cm  BT /F1 12 Tf 14.4 TL ET
+q
+1 0 0 1 51.35433 206.1449 cm
+q
+BT 1 0 0 1 0 2.8 Tm 16.8 TL /F2 14 Tf 0 0 0 rg (Creating NumPy Arrays) Tj T* ET
+Q
+Q
+q
+1 0 0 1 51.35433 188.1449 cm
+q
+BT 1 0 0 1 0 4 Tm 12 TL /F3 8 Tf 0 0 0 rg (ndarray ) Tj /F1 8 Tf (is the basic array type provided by NumPy. There a number of ways of creating them.) Tj T* ET
+Q
+Q
+q
+1 0 0 1 51.35433 82.94488 cm
+q
+q
+q
+1 0 0 1 6.6 6.6 cm
+q
+.662745 .662745 .662745 RG
+.5 w
+.960784 .960784 .862745 rg
+n -6 -6 349.6346 96 re B*
+Q
+q
+BT 1 0 0 1 0 76 Tm 12 TL /F5 8 Tf 0 .501961 0 rg (import) Tj /F3 8 Tf 0 0 0 rg ( ) Tj /F5 8 Tf 0 0 1 rg (numpy) Tj /F3 8 Tf 0 0 0 rg  T* (a) Tj ( ) Tj .4 .4 .4 rg (=) Tj 0 0 0 rg ( ) Tj (numpy) Tj .4 .4 .4 rg (.) Tj 0 0 0 rg (array) Tj (\([) Tj .4 .4 .4 rg (1) Tj 0 0 0 rg (,) Tj ( ) Tj .4 .4 .4 rg (2) Tj 0 0 0 rg (,) Tj ( ) Tj .4 .4 .4 rg (3) Tj 0 0 0 rg (]\)) Tj ( ) Tj /F4 8 Tf .25098 .501961 .501961 rg (# 1-dimensional) Tj /F3 8 Tf 0 0 0 rg  T* (b) Tj ( ) Tj .4 .4 .4 rg (=) Tj 0 0 0 rg ( ) Tj (numpy) Tj .4 .4 .4 rg (.) Tj 0 0 0 rg (array) Tj (\([[) Tj .4 .4 .4 rg (1) Tj 0 0 0 rg (,) Tj ( ) Tj .4 .4 .4 rg (2) Tj 0 0 0 rg (,) Tj ( ) Tj .4 .4 .4 rg (3) Tj 0 0 0 rg (],) Tj ( ) Tj ([) Tj .4 .4 .4 rg (4) Tj 0 0 0 rg (,) Tj ( ) Tj .4 .4 .4 rg (5) Tj 0 0 0 rg (,) Tj ( ) Tj .4 .4 .4 rg (6) Tj 0 0 0 rg (]]\)) Tj ( ) Tj /F4 8 Tf .25098 .501961 .501961 rg (# 2-dimensional) Tj /F3 8 Tf 0 0 0 rg  T* (zero) Tj ( ) Tj .4 .4 .4 rg (=) Tj 0 0 0 rg ( ) Tj (numpy) Tj .4 .4 .4 rg (.) Tj 0 0 0 rg (zeros) Tj (\(\() Tj .4 .4 .4 rg (3) Tj 0 0 0 rg (,) Tj ( ) Tj .4 .4 .4 rg (3) Tj 0 0 0 rg (\)\)) Tj  T* (one) Tj ( ) Tj .4 .4 .4 rg (=) Tj 0 0 0 rg ( ) Tj (numpy) Tj .4 .4 .4 rg (.) Tj 0 0 0 rg (ones) Tj (\(\() Tj .4 .4 .4 rg (2) Tj 0 0 0 rg (,) Tj ( ) Tj .4 .4 .4 rg (3) Tj 0 0 0 rg (,) Tj ( ) Tj .4 .4 .4 rg (4) Tj 0 0 0 rg (\)\)) Tj  T* (even) Tj ( ) Tj .4 .4 .4 rg (=) Tj 0 0 0 rg ( ) Tj (numpy) Tj .4 .4 .4 rg (.) Tj 0 0 0 rg (arange) Tj (\() Tj .4 .4 .4 rg (2) Tj 0 0 0 rg (,) Tj ( ) Tj .4 .4 .4 rg (20) Tj 0 0 0 rg (,) Tj ( ) Tj .4 .4 .4 rg (2) Tj 0 0 0 rg (\)) Tj  T* (unit) Tj ( ) Tj .4 .4 .4 rg (=) Tj 0 0 0 rg ( ) Tj (numpy) Tj .4 .4 .4 rg (.) Tj 0 0 0 rg (linspace) Tj (\() Tj .4 .4 .4 rg (0) Tj 0 0 0 rg (,) Tj ( ) Tj .4 .4 .4 rg (1) Tj 0 0 0 rg (,) Tj ( ) Tj .4 .4 .4 rg (10) Tj 0 0 0 rg (\)) Tj T* ET
+Q
+Q
+Q
+Q
+Q
+q
+1 0 0 1 51.35433 74.94488 cm
+Q
+q
+1 0 0 1 0 243.1181 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL 170.9637 0 Td (MA792K Spring 2011 Lecture 7) Tj T* -170.9637 0 Td ET
+Q
+Q
+q
+1 0 0 1 0 0 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL 193.1437 0 Td (\251 Mark Lavin 2011) Tj T* -193.1437 0 Td ET
+Q
+Q
+ 
+endstream
+endobj
+65 0 obj
+<< /Length 1574 >>
+stream
+1 0 0 1 0 0 cm  BT /F1 12 Tf 14.4 TL ET
+q
+1 0 0 1 51.35433 206.1449 cm
+q
+BT 1 0 0 1 0 2.8 Tm 16.8 TL /F2 14 Tf 0 0 0 rg (Using NumPy Arrays) Tj T* ET
+Q
+Q
+q
+1 0 0 1 51.35433 188.1449 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL (Arithmetic operators on arrays apply elementwise and create a new array with the result.) Tj T* ET
+Q
+Q
+q
+1 0 0 1 51.35433 70.94488 cm
+q
+q
+q
+1 0 0 1 6.6 6.6 cm
+q
+.662745 .662745 .662745 RG
+.5 w
+.960784 .960784 .862745 rg
+n -6 -6 349.6346 108 re B*
+Q
+q
+BT 1 0 0 1 0 88 Tm 12 TL /F5 8 Tf 0 .501961 0 rg (import) Tj /F3 8 Tf 0 0 0 rg ( ) Tj /F5 8 Tf 0 0 1 rg (numpy) Tj /F3 8 Tf 0 0 0 rg  T* (x) Tj ( ) Tj .4 .4 .4 rg (=) Tj 0 0 0 rg ( ) Tj (numpy) Tj .4 .4 .4 rg (.) Tj 0 0 0 rg (arange) Tj (\() Tj .4 .4 .4 rg (4) Tj 0 0 0 rg (\)) Tj  T* (y) Tj ( ) Tj .4 .4 .4 rg (=) Tj 0 0 0 rg ( ) Tj (numpy) Tj .4 .4 .4 rg (.) Tj 0 0 0 rg (arange) Tj (\() Tj .4 .4 .4 rg (4) Tj 0 0 0 rg (\)) Tj  T* (x) Tj ( ) Tj .4 .4 .4 rg (+) Tj 0 0 0 rg ( ) Tj (y) Tj  T* (x) Tj .4 .4 .4 rg (*) Tj (2) Tj 0 0 0 rg  T* (x) Tj .4 .4 .4 rg (**) Tj (2) Tj 0 0 0 rg  T* (x) Tj .4 .4 .4 rg (*) Tj 0 0 0 rg (y) Tj  T* (numpy) Tj .4 .4 .4 rg (.) Tj 0 0 0 rg (dot) Tj (\() Tj (x) Tj (,) Tj ( ) Tj (y) Tj (\)) Tj T* ET
+Q
+Q
+Q
+Q
+Q
+q
+1 0 0 1 51.35433 62.94488 cm
+Q
+q
+1 0 0 1 0 243.1181 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL 170.9637 0 Td (MA792K Spring 2011 Lecture 7) Tj T* -170.9637 0 Td ET
+Q
+Q
+q
+1 0 0 1 0 0 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL 193.1437 0 Td (\251 Mark Lavin 2011) Tj T* -193.1437 0 Td ET
+Q
+Q
+ 
+endstream
+endobj
+66 0 obj
+<< /Length 1627 >>
+stream
+1 0 0 1 0 0 cm  BT /F1 12 Tf 14.4 TL ET
+q
+1 0 0 1 51.35433 206.1449 cm
+q
+BT 1 0 0 1 0 2.8 Tm 16.8 TL /F2 14 Tf 0 0 0 rg (Array Slicing) Tj T* ET
+Q
+Q
+q
+1 0 0 1 51.35433 100.9449 cm
+q
+q
+q
+1 0 0 1 6.6 6.6 cm
+q
+.662745 .662745 .662745 RG
+.5 w
+.960784 .960784 .862745 rg
+n -6 -6 349.6346 96 re B*
+Q
+q
+BT 1 0 0 1 0 76 Tm 12 TL /F5 8 Tf 0 .501961 0 rg (import) Tj /F3 8 Tf 0 0 0 rg ( ) Tj /F5 8 Tf 0 0 1 rg (numpy) Tj /F3 8 Tf 0 0 0 rg  T* (x) Tj ( ) Tj .4 .4 .4 rg (=) Tj 0 0 0 rg ( ) Tj (numpy) Tj .4 .4 .4 rg (.) Tj 0 0 0 rg (arange) Tj (\() Tj .4 .4 .4 rg (20) Tj 0 0 0 rg (\)) Tj .4 .4 .4 rg (.) Tj 0 0 0 rg (reshape) Tj (\() Tj .4 .4 .4 rg (4) Tj 0 0 0 rg (,) Tj ( ) Tj .4 .4 .4 rg (5) Tj 0 0 0 rg (\)) Tj  T* (x) Tj ([) Tj .4 .4 .4 rg (1) Tj 0 0 0 rg (,) Tj ( ) Tj .4 .4 .4 rg (1) Tj 0 0 0 rg (]) Tj  T* (x) Tj ([:,) Tj ( ) Tj .4 .4 .4 rg (2) Tj 0 0 0 rg (]) Tj  T* (y) Tj ( ) Tj .4 .4 .4 rg (=) Tj 0 0 0 rg ( ) Tj (x) Tj .4 .4 .4 rg (.) Tj 0 0 0 rg (reshape) Tj (\() Tj .4 .4 .4 rg (2) Tj 0 0 0 rg (,) Tj ( ) Tj .4 .4 .4 rg (2) Tj 0 0 0 rg (,) Tj ( ) Tj .4 .4 .4 rg (5) Tj 0 0 0 rg (\)) Tj  T* (y) Tj ([:,) Tj ( ) Tj (:,) Tj ( ) Tj .4 .4 .4 rg (1) Tj 0 0 0 rg (]) Tj  T* (y) Tj ([) Tj .4 .4 .4 rg (...) Tj 0 0 0 rg (,) Tj ( ) Tj .4 .4 .4 rg (1) Tj 0 0 0 rg (]) Tj T* ET
+Q
+Q
+Q
+Q
+Q
+q
+1 0 0 1 51.35433 92.94488 cm
+Q
+q
+1 0 0 1 0 243.1181 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL 170.9637 0 Td (MA792K Spring 2011 Lecture 7) Tj T* -170.9637 0 Td ET
+Q
+Q
+q
+1 0 0 1 0 0 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL 193.1437 0 Td (\251 Mark Lavin 2011) Tj T* -193.1437 0 Td ET
+Q
+Q
+ 
+endstream
+endobj
+67 0 obj
+<< /Length 4692 >>
+stream
+1 0 0 1 0 0 cm  BT /F1 12 Tf 14.4 TL ET
+q
+1 0 0 1 51.35433 206.1449 cm
+q
+BT 1 0 0 1 0 2.8 Tm 16.8 TL /F2 14 Tf 0 0 0 rg (SciPy Modules) Tj T* ET
+Q
+Q
+q
+1 0 0 1 51.35433 200.1449 cm
+Q
+q
+1 0 0 1 51.35433 200.1449 cm
+Q
+q
+1 0 0 1 51.35433 188.1449 cm
+0 0 0 rg
+BT /F1 10 Tf 12 TL ET
+q
+1 0 0 1 6 -3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL 11.2 0 Td (\177) Tj T* -11.2 0 Td ET
+Q
+Q
+q
+1 0 0 1 23 -3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL (Clustering package \(scipy.cluster\)) Tj T* ET
+Q
+Q
+q
+Q
+Q
+q
+1 0 0 1 51.35433 188.1449 cm
+Q
+q
+1 0 0 1 51.35433 176.1449 cm
+0 0 0 rg
+BT /F1 10 Tf 12 TL ET
+q
+1 0 0 1 6 -3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL 11.2 0 Td (\177) Tj T* -11.2 0 Td ET
+Q
+Q
+q
+1 0 0 1 23 -3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL (Constants \(scipy.constants\)) Tj T* ET
+Q
+Q
+q
+Q
+Q
+q
+1 0 0 1 51.35433 176.1449 cm
+Q
+q
+1 0 0 1 51.35433 164.1449 cm
+0 0 0 rg
+BT /F1 10 Tf 12 TL ET
+q
+1 0 0 1 6 -3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL 11.2 0 Td (\177) Tj T* -11.2 0 Td ET
+Q
+Q
+q
+1 0 0 1 23 -3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL (Fourier transforms \(scipy.fftpack\)) Tj T* ET
+Q
+Q
+q
+Q
+Q
+q
+1 0 0 1 51.35433 164.1449 cm
+Q
+q
+1 0 0 1 51.35433 152.1449 cm
+0 0 0 rg
+BT /F1 10 Tf 12 TL ET
+q
+1 0 0 1 6 -3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL 11.2 0 Td (\177) Tj T* -11.2 0 Td ET
+Q
+Q
+q
+1 0 0 1 23 -3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL (Integration and ODEs \(scipy.integrate\)) Tj T* ET
+Q
+Q
+q
+Q
+Q
+q
+1 0 0 1 51.35433 152.1449 cm
+Q
+q
+1 0 0 1 51.35433 140.1449 cm
+0 0 0 rg
+BT /F1 10 Tf 12 TL ET
+q
+1 0 0 1 6 -3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL 11.2 0 Td (\177) Tj T* -11.2 0 Td ET
+Q
+Q
+q
+1 0 0 1 23 -3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL (Interpolation \(scipy.interpolate\)) Tj T* ET
+Q
+Q
+q
+Q
+Q
+q
+1 0 0 1 51.35433 140.1449 cm
+Q
+q
+1 0 0 1 51.35433 128.1449 cm
+0 0 0 rg
+BT /F1 10 Tf 12 TL ET
+q
+1 0 0 1 6 -3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL 11.2 0 Td (\177) Tj T* -11.2 0 Td ET
+Q
+Q
+q
+1 0 0 1 23 -3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL (Input and output \(scipy.io\)) Tj T* ET
+Q
+Q
+q
+Q
+Q
+q
+1 0 0 1 51.35433 128.1449 cm
+Q
+q
+1 0 0 1 51.35433 116.1449 cm
+0 0 0 rg
+BT /F1 10 Tf 12 TL ET
+q
+1 0 0 1 6 -3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL 11.2 0 Td (\177) Tj T* -11.2 0 Td ET
+Q
+Q
+q
+1 0 0 1 23 -3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL (Linear algebra \(scipy.linalg\)) Tj T* ET
+Q
+Q
+q
+Q
+Q
+q
+1 0 0 1 51.35433 116.1449 cm
+Q
+q
+1 0 0 1 51.35433 104.1449 cm
+0 0 0 rg
+BT /F1 10 Tf 12 TL ET
+q
+1 0 0 1 6 -3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL 11.2 0 Td (\177) Tj T* -11.2 0 Td ET
+Q
+Q
+q
+1 0 0 1 23 -3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL (Maximum entropy models \(scipy.maxentropy\)) Tj T* ET
+Q
+Q
+q
+Q
+Q
+q
+1 0 0 1 51.35433 104.1449 cm
+Q
+q
+1 0 0 1 51.35433 92.14488 cm
+0 0 0 rg
+BT /F1 10 Tf 12 TL ET
+q
+1 0 0 1 6 -3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL 11.2 0 Td (\177) Tj T* -11.2 0 Td ET
+Q
+Q
+q
+1 0 0 1 23 -3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL (Miscellaneous routines \(scipy.misc\)) Tj T* ET
+Q
+Q
+q
+Q
+Q
+q
+1 0 0 1 51.35433 92.14488 cm
+Q
+q
+1 0 0 1 51.35433 80.14488 cm
+0 0 0 rg
+BT /F1 10 Tf 12 TL ET
+q
+1 0 0 1 6 -3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL 11.2 0 Td (\177) Tj T* -11.2 0 Td ET
+Q
+Q
+q
+1 0 0 1 23 -3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL (Multi-dimensional image processing \(scipy.ndimage\)) Tj T* ET
+Q
+Q
+q
+Q
+Q
+q
+1 0 0 1 51.35433 80.14488 cm
+Q
+q
+1 0 0 1 51.35433 68.14488 cm
+0 0 0 rg
+BT /F1 10 Tf 12 TL ET
+q
+1 0 0 1 6 -3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL 11.2 0 Td (\177) Tj T* -11.2 0 Td ET
+Q
+Q
+q
+1 0 0 1 23 -3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL (Orthogonal distance regression \(scipy.odr\)) Tj T* ET
+Q
+Q
+q
+Q
+Q
+q
+1 0 0 1 51.35433 68.14488 cm
+Q
+q
+1 0 0 1 51.35433 56.14488 cm
+0 0 0 rg
+BT /F1 10 Tf 12 TL ET
+q
+1 0 0 1 6 -3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL 11.2 0 Td (\177) Tj T* -11.2 0 Td ET
+Q
+Q
+q
+1 0 0 1 23 -3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL (Optimization and root finding \(scipy.optimize\)) Tj T* ET
+Q
+Q
+q
+Q
+Q
+q
+1 0 0 1 51.35433 56.14488 cm
+Q
+q
+1 0 0 1 51.35433 56.14488 cm
+Q
+q
+1 0 0 1 0 243.1181 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL 170.9637 0 Td (MA792K Spring 2011 Lecture 7) Tj T* -170.9637 0 Td ET
+Q
+Q
+q
+1 0 0 1 0 0 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL 193.1437 0 Td (\251 Mark Lavin 2011) Tj T* -193.1437 0 Td ET
+Q
+Q
+ 
+endstream
+endobj
+68 0 obj
+<< /Length 3334 >>
+stream
+1 0 0 1 0 0 cm  BT /F1 12 Tf 14.4 TL ET
+q
+1 0 0 1 51.35433 206.1449 cm
+q
+BT 1 0 0 1 0 2.8 Tm 16.8 TL /F2 14 Tf 0 0 0 rg (SciPy Modules \(cont.\)) Tj T* ET
+Q
+Q
+q
+1 0 0 1 51.35433 200.1449 cm
+Q
+q
+1 0 0 1 51.35433 200.1449 cm
+Q
+q
+1 0 0 1 51.35433 188.1449 cm
+0 0 0 rg
+BT /F1 10 Tf 12 TL ET
+q
+1 0 0 1 6 -3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL 11.2 0 Td (\177) Tj T* -11.2 0 Td ET
+Q
+Q
+q
+1 0 0 1 23 -3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL (Signal processing \(scipy.signal\)) Tj T* ET
+Q
+Q
+q
+Q
+Q
+q
+1 0 0 1 51.35433 188.1449 cm
+Q
+q
+1 0 0 1 51.35433 176.1449 cm
+0 0 0 rg
+BT /F1 10 Tf 12 TL ET
+q
+1 0 0 1 6 -3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4 Tm /F1 8 Tf 12 TL 11.2 0 Td (\177) Tj T* -11.2 0 Td ET
+Q
+Q
+q