一般来说,numpy 函数在使用生成器时并不总是像您期望的那样。要创建一个 numpy 数组,您需要在创建它之前知道它的大小和类型,而这对于生成器来说是不可能的。如此多的 numpy 函数要么不适用于生成器,要么在依赖 Python 内置函数的情况下执行此类操作。
然而,出于同样的原因,在 Numpy 上下文中使用生成器通常不是很有用。从 Numpy 对象生成生成器并没有真正的优势,因为无论如何您都必须将整个 Numpy 对象保存在内存中。如果您需要所有类型都保持您指定的状态,那么您不应该将 Numpy 对象包装在生成器中。
更多信息:从技术上讲, to 的参数np.sum应该是“类似数组”的对象,而不是可迭代的。类数组在文档中定义为:
数组、任何公开数组接口的对象、其__array__方法返回数组的对象或任何(嵌套)序列。
阵列接口在此处记录。基本上,数组必须具有固定的形状和统一的类型。
Generators don't fit this protocol and so aren't really supported. Many numpy functions are nice and will accept other sorts of objects that don't technically qualify as array-like, but a strict reading of the docs implies you can't rely on this behavior. The operations may work, but you can't expect all the types to be preserved perfectly.