# Programming in PythonPackages

A **package**

Many Python packages are available in every standard distribution of Python and can be used without having to worry about whether they're installed. These packages make up the **standard library**. To see a list of standard library packages, visit the standard library page of the Python documentation. Here's an example showing how to import the `math`

package and use the `sqrt`

function it contains:

import math math.sqrt(3)

Note that we access names like `sqrt`

provided by the package using the dot `math.sqrt`

. This is common practice, and it's a good idea because if functions are called in a way that makes it clear what package they came from, then (1) you can use the same name in multiple packages, and (2) you can easily identify which package that is supplying each function. We can also import individual functions and skip the dot syntax:

from math import sqrt sqrt(3)

Sometimes a package contains a **subpackage** which must itself be accessed with dot syntax:

from numpy.random import standard_normal standard_normal()

## Scientific computing packages in Python

Here are some of the most important scientific computing packages (along with very brief code snippets to give you a sense of what calling the packages looks like in practice):

**NumPy**. Provides multi-dimensional arrays (like vectors, matrices, and higher-order arrays).

import numpy as np np.random.standard_normal((5,5)) # randomly fill a 5 × 5 matrix np.full((3,3),7) # make a 3 × 3 matrix full of 7's

Note that we import `numpy`

with the alias `np`

for brevity.

**Pandas**. Provides support for tabular data.

import pandas as pd iris = pd.read_csv("http://bit.ly/iris-dataset") iris

**SciPy**. Provides scientific computing tools for optimization, numerical integration, linear algebra, statistics, etc.

from scipy.optimize import minimize minimize(lambda x: x*(x-1), 1.0) # start from 1 and minimize x(x-1)

**Matplotlib**. Standard plotting package in Python. (*Note*: run the cell below twice to get the graph to display.)

import matplotlib.pyplot as plt import numpy as np plt.plot(np.cumsum(np.random.standard_normal(1000)))

**SymPy**. Pure math tools like symbolic integration/differentiation, number theory, etc.

from sympy import symbols, Eq, solve x = symbols("x") y = symbols("y") solve([Eq(x + 5*y, 2), Eq(-3*x + 6*y, 15)], [x, y])

The example above solves the system of equations:

for and .

## Exercises

**Exercise**

To import just the `arcsin`

function from `numpy`

, we would use what statement?

*Solution.* `from numpy import arcsin`

**Exercise**

To import `sympy`

with alias `sp`

, we would use what statement?

*Solution* `import sympy as sp`

**Exercise**

To import the standard library package `itertools`

(with no alias), we would use what statement?

*Solution* `import itertools`