Skip to main content

A wrapper around numpy that does lazy evaluations to optimize for chained matrix multiplication

Project description

Build Status codecov

lazynumpy

a lazy evaluated wrapper around numpy

What is gained?

  • Chained matrix multiplication will be minimized by keeping the values of the other arrays in memory and solving the associative problem that minimizes the number of computations.
    • only keeps one copy of each matrix [Memory optimization in progress]
  • Allow partial matrix returns withou calculating the entire matrix [In Progress]

If you have three matrices with dimensions as below there are two ways to do the matrix multiplication to find the answer:

Either:

or

[1] will take 1000 * 1 * 1000 operations to calculate A * B plus 1000 * 1000 * 1000 operations to calculate (A * B) * C. The total sum to calculate A * B * C is equal to 1000^3 + 1000^2.

[2] will take 1 * 1000 * 1000 operations to calculate B * C plus 1000 * 1 * 1000 operations to calculate A * (B * C). The total sum to calculate A * B * C is equal to 1000^2 + 1000^2 which means the optimal multiplication order will be ~500 faster.

If you run the simple example you should see a significant speed up. On my computer there is a 50x speedup with only three matrix calculations.

Project details


Release history Release notifications

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for lazynumpy, version 0.0.1
Filename, size File type Python version Upload date Hashes
Filename, size lazynumpy-0.0.1-py3-none-any.whl (8.7 kB) File type Wheel Python version py3 Upload date Hashes View hashes
Filename, size lazynumpy-0.0.1.tar.gz (5.8 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page