A better scipy.stats.uniform
Project description
A better scipy.stats.uniform
The stats
sub-package of scipy is quite cool.
In particular, it provides dozens of probability distributions implemented with a common interface.
But scipy.stats.uniform
always bugged me.
>>> from scipy import stats >>> help(stats.uniform) A uniform continuous random variable. This distribution is constant between `loc` and ``loc + scale``.
Why loc + scale
? Why not scale
?
So I wrote better_uniform
: eight small lines of code that don't bug me so much.
from scipy import stats class frozen(stats._distn_infrastructure.rv_frozen): def __init__(self, dist, *args, **kwds): super(frozen,self).__init__(dist, *args, **kwds) def buniform(a, b): # b for better dist = stats.uniform dist.name = 'uniform' return frozen(dist, loc=a, scale=b-a)
Now it works as I expect it to work:
d = buniform(0, 1) d.rvs() # 0 < rv < 1 d.interval(1) # (0.0, 1.0) d = buniform(1, 2) d.rvs() # 1 < rv < 2 d.interval(1) # (1.0, 2.0) # note the difference from scipy.stats import uniform d = uniform(1, 2) d.rvs() # 1 < rv < 3 d.interval(1) # (1.0, 3.0)
That's it!
Cool, I want it!
pip install better-uniform
or
git clone https://github.com/j-faria/better_uniform.git
cd better_uniform
python setup.py install
and later, from Python
from better_uniform import buniform
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
better_uniform-1.0.5.tar.gz
(2.2 kB
view hashes)