[Numpy-discussion] numpy.arange() error?
Matteo Malosio
matteo.malosio@itia.cnr...
Tue Feb 14 00:53:10 CST 2012
I think the problem is quite easy to solve, without changing the
"documentation" behaviour.
The doc says:
Help on built-in function arange in module numpy.core.multiarray:
/
arange(...)
arange([start,] stop[, step,], dtype=None)
Return evenly spaced values within a given interval.
Values are generated within the half-open interval ``[start, stop)``
(in other words, the interval including `start` but excluding `stop`).
For integer arguments the function is equivalent to the Python built-in
`range <http://docs.python.org/lib/built-in-funcs.html>`_ function,
but returns a ndarray rather than a list.
/
stop is exclusive "by definition". So substracting a very small value to
stop when processing "stop" I think is the best way.
Matteo
Il 10/02/2012 02:22, Drew Frank ha scritto:
> On Thu, Feb 9, 2012 at 3:40 PM, Benjamin Root <ben.root@ou.edu
> <mailto:ben.root@ou.edu>> wrote:
>
>
>
> On Thursday, February 9, 2012, Sturla Molden <sturla@molden.no
> <mailto:sturla@molden.no>> wrote:
> >
> >
> > Den 9. feb. 2012 kl. 22:44 skrev eat <e.antero.tammi@gmail.com
> <mailto:e.antero.tammi@gmail.com>>:
> >
> >>
> > Maybe this issue is raised also earlier, but wouldn't it be more
> consistent to let arange operate only with integers (like Python's
> range) and let linspace handle the floats as well?
> >
> >
> > Perhaps. Another possibility would be to let arange take decimal
> arguments, possibly entered as text strings.
> > Sturla
>
>
> Personally, I treat arange() to mean, "give me a sequence of
> values from x to y, exclusive, with a specific step size".
> Nowhere in that statement does it guarantee a particular number
> of elements. Whereas linspace() means, "give me a sequence of
> evenly spaced numbers from x to y, optionally inclusive, such that
> there are exactly N elements". They complement each other well.
>
>
> I agree -- both functions are useful and I think about them the same
> way. The unfortunate part is that tiny precision errors in y can make
> arange appear to be "sometimes-exclusive" rather than always
> exclusive. I've always imagined there to be a sort of duality between
> the two functions, where arange(low, high, step) == linspace(low,
> high-step, round((high-low)/step)) in cases where (high - low)/step is
> integral, but it turns out this is not the case.
>
>
> There are times when I intentionally will specify a range where
> the step size will not nicely fit. i.e.- np.arange(1, 7, 3.5). I
> wouldn't want this to change.
>
>
> Nor would I. What I meant to express earlier is that I like how
> Matlab addresses this particular class of floating point precision
> errors, not that I think arange output should somehow include both
> endpoints.
>
>
> My vote is that if users want matlab-colon-like behavior, we could
> make a new function - maybe erange() for "exact range"?
>
>
> Ben Root
>
>
> That could work; it would completely replace arange for me in every
> circumstance I can think of, but I understand we can't just go
> changing the behavior of core functions.
>
> Drew
>
>
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion@scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
--
-------------------------------------------------------
Matteo Malosio, Eng.
Researcher
ITIA-CNR (www.itia.cnr.it)
Institute of Industrial Technologies and Automation
National Research Council
via Bassini 15, 20133 MILANO, ITALY
Ph: +39 0223699625
Fax: +39 0223699925
e-mail:matteo.malosio@itia.cnr.it
-------------------------------------------------------
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.scipy.org/pipermail/numpy-discussion/attachments/20120214/a67a878f/attachment.html
More information about the NumPy-Discussion
mailing list