Skip to main content

Some useful extensions for NumPy

Project description

npx

PyPi Version PyPI pyversions GitHub stars PyPi downloads

gh-actions codecov LGTM Code style: black

NumPy and SciPy are large libraries used everywhere in scientific computing. That's why breaking backwards-compatibility comes as a significant cost and is almost always avoided, even if the API of some methods is arguably lacking. This package provides drop-in wrappers "fixing" those.

If you have a fix for a NumPy method that can't go upstream for some reason, feel free to PR here.

np.dot

npx.dot(a, b)

Forms the dot product between the last axis of a and the first axis of b.

(Not the second-last axis of b as numpy.dot(a, b).)

np.solve

npx.solve(A, b)

Solves a linear equation system with a matrix of shape (n, n) and an array of shape (n, ...). The output has the same shape as the second argument.

np.ufunc.at

npx.sum_at(a, idx, minlength=0)
npx.add_at(out, idx, a)

Returns an array with entries of a summed up at indices idx with a minumum length of minlength. idx can have any shape as long as it's matching a. The output shape is (minlength,...).

The numpy equivalent numpy.add.at is much slower:

memory usage

Corresponding report: https://github.com/numpy/numpy/issues/11156.

np.unique

npx.unique_rows(a, return_inverse=False, return_counts=False)

Returns the unique rows of the integer array a. The numpy alternative np.unique(a, axis=0) is slow.

Corresponding report: https://github.com/numpy/numpy/issues/11136.

SciPy Krylov methods

sol, info = npx.cg(A, b, tol=1.0e-10)
sol, info = npx.minres(A, b, tol=1.0e-10)
sol, info = npx.gmres(A, b, tol=1.0e-10)

sol is the solution of the linear system A @ x = b (or None if no convergence), and info contains some useful data, e.g., info.resnorms. The methods are wrappers around SciPy's iterative solvers.

SciPy minimization

def f(x):
    return (x ** 2 - 2) ** 2

x0 = 1.5
out = npx.minimize(f, x0)

In SciPy, the result from a minimization out.x will always have shape (n,), no matter the input vector. npx changes this to respect the input vector shape.

Corresponding report: https://github.com/scipy/scipy/issues/13869.

License

npx is published under the MIT license.

Project details


Download files

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

Source Distribution

npx-0.0.8.tar.gz (7.8 kB view details)

Uploaded Source

Built Distribution

npx-0.0.8-py3-none-any.whl (7.0 kB view details)

Uploaded Python 3

File details

Details for the file npx-0.0.8.tar.gz.

File metadata

  • Download URL: npx-0.0.8.tar.gz
  • Upload date:
  • Size: 7.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.10.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.4

File hashes

Hashes for npx-0.0.8.tar.gz
Algorithm Hash digest
SHA256 c4b4cdf85ecbd9392260b3dae7d1a0b90d72f5a6515f98572f8a3dfdb0a0bfdd
MD5 d48a5fcbd9005db3d06c12bd62d11817
BLAKE2b-256 d7e4dc3008641619fd9f9497edca113e1ef6e2e761afa560d2990390b9189ad3

See more details on using hashes here.

File details

Details for the file npx-0.0.8-py3-none-any.whl.

File metadata

  • Download URL: npx-0.0.8-py3-none-any.whl
  • Upload date:
  • Size: 7.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.10.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.4

File hashes

Hashes for npx-0.0.8-py3-none-any.whl
Algorithm Hash digest
SHA256 32708e1e47cb3b79b639f9ac6da06dbd6f303822c181c5433463bb7c7452923d
MD5 56c5a73362d841063ecfdbf4c52c8da4
BLAKE2b-256 52c9244833cf3c40d09fed5450b9172cee2b09248ba4d0c0b6bf89807d61bde3

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page