---
language: python
---
category: ["Numpy/Scipy", "Intro"]
---
title: Numpy Basics
descr: >
[Numpy](http://docs.scipy.org/) is a library for numerical mathematics.
It is usually imported via `import numpy as np`.
code: |
import numpy as np
print np, np.__version__
---
title: Vectors and Matrices
descr: >
NumPy's main purpose is to create n-dimensional tensors for numerical computations in linear algebra.
A vector is 1-D, and constructed via `np.array([...])`.
A 2-D array is a matrix: `np.arry([[1, 2][2, -1]])`.
code: |
import numpy as np
print(np.array([1, 2, 5, 10]))
print(np.array([[1, -1], [-1, 2]]))
---
category: ["Numpy/Scipy", "Optimization"]
title: Optimization, 1D, unconstrained
descr: Unconstrained one-dimensional optimization with Scipy.
code: |
from scipy import optimize
def f(x):
return 3 * (1 - x) + (x - 2)**2
res = optimize.minimize_scalar(f)
print(res.x)
print(f(res.x))
---
title: Optimization, 1D, constrained
descr: Constrained one-dimensional optimization with Scipy.
code: |
from scipy import optimize
def f(x):
return 3 * (1 - x) + (x - 2)**2
res = optimize.minimize_scalar(f, bounds=(-1, 1), method='bounded')
print(res.x)
print(f(res.x))
---
title: Optimization, ND, unconstrained
descr: >
Minimize the classical Rosenbock function with starting value $(2,2)$.
Retrive the minimum $\hat{x}$ via `res.x` from the result object.
More information: [scipy.optimize.minimize](https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.minimize.html)
code: |
from scipy import optimize
def f(x):
return .5*(1 - x[0])**2 + (x[1] - x[0]**2)**2
res = optimize.minimize(f, [2, 2])
print(res)