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.

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.

sum_at/add_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 issue report

unique_rows

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 issue report

isin_rows

npx.isin_rows(a, b)

Returns a boolean array of length len(a) specifying if the rows a[k] appear in b. Similar to NumPy's own np.isin which only works for scalars.

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, info = npx.bicg(A, b, tol=1.0e-10)
sol, info = npx.bicgstab(A, b, tol=1.0e-10)
sol, info = npx.cgs(A, b, tol=1.0e-10)
sol, info = npx.qmr(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.

Relevant issues:

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 issue report

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.12.tar.gz (11.5 kB view details)

Uploaded Source

Built Distribution

npx-0.0.12-py3-none-any.whl (8.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: npx-0.0.12.tar.gz
  • Upload date:
  • Size: 11.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.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.12.tar.gz
Algorithm Hash digest
SHA256 644c44dc5fb9301f0e6cfe0a838c9c7b1fe410eb8d3bbc90136aaac22b4133ad
MD5 c5aefaf2697c4198bc4e225022d70d4e
BLAKE2b-256 bbb9bb3c3abc9d93314100446981527059f3c1e4192d8c5055686be0f0792a9a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: npx-0.0.12-py3-none-any.whl
  • Upload date:
  • Size: 8.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.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.12-py3-none-any.whl
Algorithm Hash digest
SHA256 d39729cb7072e4804000f5266a861adeba33d4c106cceb93589b149c40506707
MD5 4353cb29a8dba636a2d15266b9c292ea
BLAKE2b-256 ebd2584e5677bba0e1d1b02284184a13651cae68b0ce6f4ca82f22aa6c9f47cf

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