Notes using numpy
In this post I will document certain things I’ve learned when working with numpy. Might be interesting to some people.
Table of Contents
Axes in numpy
Axes in numpy are defined for arrays in more than one dim. A 2D array has the 0th axis running vertically downwards across rows and the 1st axis is running horizontally running across columns.
See https://docs.scipy.org/doc/numpy-1.10.0/glossary.html
Printoptions
The numpy.printoptions
function can be used for setting various global print options like
linewidth and precision during printing to console. Useful for debugging and viewing:
suppress
- Suppress printing in scientific notation.precision
- Limit the precision of numbers printed.linewidth
- Max width of printing.
Debugging
The pdb
module is useful for debugging python. Place pdb.set_trace()
in some place
in the code where you want the code to break. It will then provide you with a python
REPL.
Here’s a link to it: https://pythonconquerstheuniverse.wordpress.com/2009/09/10/debugging-in-python/
Broadcasting
Numpy uses ‘broadcastable’ data structures. It describes how numpy treats arrays with different shapes during arithmetic operations.
Link:
- https://docs.scipy.org/doc/numpy/user/basics.broadcasting.html
- https://eli.thegreenplace.net/2015/broadcasting-arrays-in-numpy/
Shape parameters
Sometimes, some operations return their shape at (R,1)
and some as (R,)
. This design
decision is taken because numpy arrays are indexed by two numbers in the former case and
a single number in the latter case. This allows single number indexing and storage in
flat-indexed arrays.
Link: https://stackoverflow.com/questions/22053050/difference-between-numpy-array-shape-r-1-and-r/22074424
Useful functions
Setting diagonals
Use numpy.fill_diagonal()
for filling the diagonal of an array with some number.
Take note that this is an in-place modification function and that it does not return
any value.
Link: https://docs.scipy.org/doc/numpy/reference/generated/numpy.fill_diagonal.html
Matrix lower triangle
Use numpy.tril()
and pass the object.
Inverse of a matrix
Compute multiplicative inverse of a matrix using numpy.linalg.inv()
.
Link: https://docs.scipy.org/doc/numpy-1.14.0/reference/generated/numpy.linalg.inv.html
Multiplication
*
is element-wise multiplication between two arrays. For matrix multiplication use
numpy.matmul
.