一般来说,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.