The stats_arrays package provides a standard NumPy array interface for defining uncertain parameters used in models, and classes for Monte Carlo sampling. It also plays well with others.
Motivation
- Want a consistent interface to SciPy and NumPy statistical function
- Want to be able to quickly load and save many parameter uncertainty distribution definitions in a portable format
- Want to manipulate and switch parameter uncertainty distributions and variables
- Want simple Monte Carlo random number generators that return a vector of parameter values to be fed into uncertainty or sensitivity analysis
- Want something simple, extensible, documented and tested
The `stats_arrays package was originally developed for the Brightway2 life cycle assessment framework, but can be applied to any stochastic model.
Example
>>> from stats_arrays import *
>>> my_variables = UncertaintyBase.from_dicts(
... {'loc': 2, 'scale': 0.5, 'uncertainty_type': NormalUncertainty.id},
... {'loc': 1.5, 'minimum': 0, 'maximum': 10, 'uncertainty_type': TriangularUncertainty.id}
... )
>>> my_variables
array([(2.0, 0.5, nan, nan, nan, False, 3),
(1.5, nan, nan, 0.0, 10.0, False, 5)],
dtype=[('loc', '<f8'), ('scale', '<f8'), ('shape', '<f8'),
('minimum', '<f8'), ('maximum', '<f8'), ('negative', '?'),
('uncertainty_type', 'u1')])
>>> my_rng = MCRandomNumberGenerator(my_variables)
>>> my_rng.next()
array([ 2.74414022, 3.54748507])
>>> # can also be used as an interator
>>> zip(my_rng, xrange(10))
[(array([ 2.96893108, 2.90654471]), 0),
(array([ 2.31190619, 1.49471845]), 1),
(array([ 3.02026168, 3.33696367]), 2),
(array([ 2.04775418, 3.68356226]), 3),
(array([ 2.61976694, 7.0149952 ]), 4),
(array([ 1.79914025, 6.55264372]), 5),
(array([ 2.2389968 , 1.11165296]), 6),
(array([ 1.69236527, 3.24463981]), 7),
(array([ 1.77750176, 1.90119991]), 8),
(array([ 2.32664152, 0.84490754]), 9)]
Type checking
stats_arrays is a typed library. It ships a py.typed marker (PEP 561), so mypy,
pyright and friends will use its inline annotations rather than treating the package
as untyped. Two aliases are exported for annotating your own code:
from typing import Optional
from stats_arrays import NormalUncertainty, ParamsArray, StatisticsResult
params: ParamsArray = NormalUncertainty.from_dicts({"loc": 2.0, "scale": 0.5})
stats: StatisticsResult = NormalUncertainty.statistics(params)
mean: Optional[float] = stats["mean"]
StatisticsResult is a TypedDict with the keys mean, mode, median, lower and
upper; a statistic that is undefined for a given distribution is None, never absent.
Note that the field layout of a params array is not expressible in NumPy's typing system,
so ParamsArray documents intent and field access (params["loc"]) stays untyped.
More
- Source code: https://github.com/brightway-lca/stats_arrays
- Online documentation: https://stats-arrays.readthedocs.io/en/latest/
Metadata
Release files for stats-arrays 4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| stats_arrays-4.0.tar.gz | 45.3 kB | Without provenance | Details for stats_arrays-4.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| stats_arrays-4.0-py3-none-any.whl | Python 3 | none | any | Details for stats_arrays-4.0-py3-none-any.whl |
Total release size: 78.7 kB
Release files / stats_arrays-4.0.tar.gz
| Download URL | stats_arrays-4.0.tar.gz |
|---|---|
| Size | 45.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6be56ac89d36a3fdc3bc6aed5ace4fe5afa2f965153d8909e3e00c7e7530dc5e
|
|
BLAKE2b-256 checksum How to use checksums |
51e29803282cd6a5326cc23476083dd9abe325367368d7184ee3d1c45d574029
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.7
|
Release files / stats_arrays-4.0-py3-none-any.whl
| Download URL | stats_arrays-4.0-py3-none-any.whl |
|---|---|
| Size | 33.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5ab30be4b471e2ddb807b86b9480912550717fbce2761c30d79df239f40141e4
|
|
BLAKE2b-256 checksum How to use checksums |
5db195afea125bc0673d756d6226a8f143f4f0e5a08b60f503c92aa50f2906ec
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.7
|
Security for stats-arrays 4.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.