のこの奇妙な動作に出くわしましたnumpy.sum
:
>>> import numpy
>>> ar = numpy.array([1,2,3], dtype=numpy.uint64)
>>> gen = (el for el in ar)
>>> lst = [el for el in ar]
>>> numpy.sum(gen)
6.0
>>> numpy.sum(lst)
6
>>> numpy.sum(iter(lst))
<listiterator object at 0x87d02cc>
dtype
ドキュメントによると、結果はiterableと同じになるはずですが、なぜ最初のケースで a のnumpy.float64
代わりに a が返されるのnumpy.uint64
ですか? そして、最後の例はどのような種類の合計も返さず、エラーも発生しないのはなぜですか?