Wie baue ich ein Numpy-Array aus einem Generator?

Wie kann ich ein Numpy-Array aus einem Generator-Objekt erstellen?

Lassen Sie mich das Problem veranschaulichen:

>>> import numpy
>>> def gimme():
...   for x in xrange(10):
...     yield x
...
>>> gimme()
<generator object at 0x28a1758>
>>> list(gimme())
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> numpy.array(xrange(10))
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> numpy.array(gimme())
array(<generator object at 0x28a1758>, dtype=object)
>>> numpy.array(list(gimme()))
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

In diesem Fall ist gimme () der Generator, dessen Ausgabe ich in ein Array umwandeln möchte. Der Array-Konstruktor iteriert jedoch nicht über den Generator, sondern speichert lediglich den Generator selbst. Das Verhalten, das ich mir wünsche, ist das von numpy.array (list (gimme ())), aber ich möchte nicht den Speicheraufwand dafür bezahlen, dass die Zwischenliste und das endgültige Array gleichzeitig im Speicher sind. Gibt es eine platzsparendere Möglichkeit?

Antworten auf die Frage(10)

Ihre Antwort auf die Frage