Future of Python and NumPy for array-oriented computing

Author

Why Python?

  • Fits your brain
  • Doesn’t get in your way
  • Software engineering is more about neuroscience than code.
  • Fibonacci is just an Unstable Infinite Impulse Response linear filter
  • Shows numpy example, which is fast, but wraps hardware integer
  • Wants to make Python faster than C, as in a GPU or FPGA

Conway’s Game of Life

  • Interesting excercies

  • Shows an example of it

  • Array oriented

  • APL
    • Grandfather of most array oriented languages
    • J,K,Matlab are descendents
    • Numpy is a descendent
    • Unicode glyphs
  • Game of Life is one line in APL

  • Array-oriented programming deals with arrays as a block

  • Shows numpy example

Numpy/Scipy History

  • Numeric around ~1994

  • More features for array oriented computing
    • a[0,1], a[::2]
    • Ellipsis object
    • Complex numbers
  • Syntax matters

  • Aside: We need more numpy/scipy and core collaboration

  • Derivative Calculations in 1997

  • Came from MATLAB, but it wasn’t memory efficient enough

  • Iterative update loop made Python nice

  • 1999 Scipy emerges

  • Python was better language than MATLAB, but lacked scientific libraries

  • Community Effort
    • Mostly from academics
  • Numpy emerged from Numeric in 2005

Numpy

  • Data types
    • Collections of objects
    • Arrays
  • Statistics functions

  • Arbitrary Arrays
    • Column oriented calculations

Scipy

  • Stats
  • Data fitting
  • Interpolation
  • Brownian Motion

Pypy

  • Let’s not chase C, let’s chase Fortran 90.
  • Example where Fortran 90 is 7 times faster than Numpy and Pypy

Question

  • Coolest thing seen with NumPy?
    • Implant surgery planning tool
    • CT Scans, 3d vis