Actually, while working on https://github.com/numpy/numpy/issues/7264 I realized that the memory efficiency (one-pass) argument is simply incorrect:
import numpy as np class A: def __getitem__(self, i): print("A get item", i) return [np.int8(1), np.int8(2)][i] def __len__(self): return 2 print(repr(np.array(A()))) This prints out A get item 0 A get item 1 A get item 2 A get item 0 A get item 1 A get item 2 A get item 0 A get item 1 A get item 2 array([1, 2], dtype=int8) i.e. the sequence is "turned into a concrete sequence" no less than 3 times. Antony 2016-01-19 11:33 GMT-08:00 Stephan Sahm <stephan.s...@gmx.de>: > just to not prevent it from the black hole - what about integrating > fromiter into array? (see the post by Benjamin Root) > > for me personally, taking the first element for deducing the dtype would > be a perfect default way to read generators. If one wants a specific other > dtype, one could specify it like in the current fromiter method. > > On 15 December 2015 at 08:08, Stephan Sahm <stephan.s...@gmx.de> wrote: > >> I would like to further push Benjamin Root's suggestion: >> >> "Therefore, I think it is not out of the realm of reason that passing a >> generator object and a dtype could then delegate the work under the hood to >> np.fromiter()? I would even go so far as to raise an error if one passes a >> generator without specifying dtype to np.array(). The point is to reduce >> the number of entry points for creating numpy arrays." >> >> would this be ok? >> >> On Mon, Dec 14, 2015 at 6:50 PM Robert Kern <robert.k...@gmail.com> >> wrote: >> >>> On Mon, Dec 14, 2015 at 5:41 PM, Benjamin Root <ben.v.r...@gmail.com> >>> wrote: >>> > >>> > Heh, never noticed that. Was it implemented more like a >>> generator/iterator in older versions of Python? >>> >>> No, it predates generators and iterators so it has always had to be >>> implemented like that. >>> >>> -- >>> Robert Kern >>> _______________________________________________ >>> 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