생성기 객체에서 numpy 배열을 어떻게 만들 수 있습니까?
문제를 설명해 드리겠습니다.
>>> 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])
이 경우 gimme()
출력을 배열로 바꾸고 싶은 발전기입니다. 그러나 배열 생성자는 생성기를 반복하지 않고 단순히 생성기 자체를 저장합니다. 내가 원하는 동작은 from numpy.array(list(gimme()))
이지만, 중간 목록과 최종 배열을 메모리에 동시에 갖는 메모리 오버 헤드를 지불하고 싶지 않습니다. 더 공간 효율적인 방법이 있습니까?
numpy
없는 (또는 원치 않는)은 인수로 발전기를 받으면 파이썬 적어도 예외를 제기해야 않는 치료 용 발전기.
from numpy import *; print any(False for i in range(1))
습니다. 내장을 어둡게any()
하고 반대 결과를 얻습니다 (지금 알고있는 것처럼).