Comment puis-je construire un tableau numpy d'un générateur d'objet?
Permettez-moi d'illustrer le problème:
>>> 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])
Dans ce cas, donnez-moi de la() est le générateur dont la sortie j'aimerais tourner dans un tableau. Toutefois, la gamme du constructeur de ne pas effectuer une itération sur le générateur, il enregistre simplement le générateur lui-même. Le comportement que je désire, c'est que de numpy.tableau(liste(gimme())), mais je ne veux pas payer la surcharge de la mémoire d'avoir l'intermédiaire de la liste et le tableau final dans la mémoire en même temps. Est-il plus efficace?