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.Sahm@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.Sahm@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.kern@gmail.com> wrote:
On Mon, Dec 14, 2015 at 5:41 PM, Benjamin Root <ben.v.root@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