On Sun, Feb 14, 2016 at 3:21 AM, Antony Lee <antony....@berkeley.edu> wrote:
> re: no reason why... > This has nothing to do with Python2/Python3 (I personally stopped using > Python2 at least 3 years ago.) Let me put it this way instead: if > Python3's "range" (or Python2's "xrange") was not a builtin type but a type > provided by numpy, I don't think it would be controversial at all to > provide an `__array__` special method to efficiently convert it to a > ndarray. It would be the same if `np.array` used a > `functools.singledispatch` dispatcher rather than an `__array__` special > method (which is obviously not possible for chronological reasons). > > But numpy does provide arange. What's the reason to not use np.arange and use an iterator instead? > re: iterable vs iterator: check for the presence of the __next__ special > method (or isinstance(x, Iterable) vs. isinstance(x, Iterator) and not > isinstance(x, Iterable)) > AFAIR and from spot checking the mailing list, in the past the argument was that it's too complicated to mix array/asarray creation with fromiter building of arrays. (I have no idea if array could cheaply delegate to fromiter.) Josef > > Antony > > > 2016-02-13 18:48 GMT-08:00 <josef.p...@gmail.com>: > >> >> >> On Sat, Feb 13, 2016 at 9:43 PM, <josef.p...@gmail.com> wrote: >> >>> >>> >>> On Sat, Feb 13, 2016 at 8:57 PM, Antony Lee <antony....@berkeley.edu> >>> wrote: >>> >>>> Compare (on Python3 -- for Python2, read "xrange" instead of "range"): >>>> >>>> In [2]: %timeit np.array(range(1000000), np.int64) >>>> 10 loops, best of 3: 156 ms per loop >>>> >>>> In [3]: %timeit np.arange(1000000, dtype=np.int64) >>>> 1000 loops, best of 3: 853 µs per loop >>>> >>>> >>>> Note that while iterating over a range is not very fast, it is still >>>> much better than the array creation: >>>> >>>> In [4]: from collections import deque >>>> >>>> In [5]: %timeit deque(range(1000000), 1) >>>> 10 loops, best of 3: 25.5 ms per loop >>>> >>>> >>>> On one hand, special cases are awful. On the other hand, the range >>>> builtin is probably important enough to deserve a special case to make this >>>> construction faster. Or not? I initially opened this as >>>> https://github.com/numpy/numpy/issues/7233 but it was suggested there >>>> that this should be discussed on the ML first. >>>> >>>> (The real issue which prompted this suggestion: I was building sparse >>>> matrices using scipy.sparse.csc_matrix with some indices specified using >>>> range, and that construction step turned out to take a significant portion >>>> of the time because of the calls to np.array). >>>> >>> >>> >>> IMO: I don't see a reason why this should be supported. There is >>> np.arange after all for this usecase, and from_iter. >>> range and the other guys are iterators, and in several cases we can use >>> larange = list(range(...)) as a short cut to get python list.for python 2/3 >>> compatibility. >>> >>> I think this might be partially a learning effect in the python 2 to 3 >>> transition. After using almost only python 3 for maybe a year, I don't >>> think it's difficult to remember the differences when writing code that is >>> py 2.7 and py 3.x compatible. >>> >>> >>> It's just **another** thing to watch out for if milliseconds matter in >>> your application. >>> >> >> >> side question: Is there a simple way to distinguish a iterator or >> generator from an iterable data structure? >> >> Josef >> >> >> >>> >>> Josef >>> >>> >>>> >>>> Antony >>>> >>>> _______________________________________________ >>>> NumPy-Discussion mailing list >>>> NumPy-Discussion@scipy.org >>>> https://mail.scipy.org/mailman/listinfo/numpy-discussion >>>> >>>> >>> >> >> _______________________________________________ >> NumPy-Discussion mailing list >> NumPy-Discussion@scipy.org >> https://mail.scipy.org/mailman/listinfo/numpy-discussion >> >> > > _______________________________________________ > NumPy-Discussion mailing list > NumPy-Discussion@scipy.org > https://mail.scipy.org/mailman/listinfo/numpy-discussion > >
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org https://mail.scipy.org/mailman/listinfo/numpy-discussion