¿Cómo construyo una matriz numpy desde un generador?

¿Cómo puedo construir una matriz numpy de un objeto generador?

Déjame ilustrar el problema:

>>> 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])

En este caso, gimme () es el generador cuya salida me gustaría convertir en una matriz. Sin embargo, el constructor de matriz no itera sobre el generador, simplemente almacena el generador en sí. El comportamiento que deseo es el de numpy.array (list (gimme ())), pero no quiero pagar la sobrecarga de memoria de tener la lista intermedia y la matriz final en la memoria al mismo tiempo. ¿Hay una manera más eficiente en el espacio?

Respuestas a la pregunta(5)

Su respuesta a la pregunta