使用 copy=False 为 numpy.array 分配内存?

Rui*_*iao 1 python memory numpy

如果X的类型是numpy.array with dtype ='f4'

那么下面一行的内存行为是什么:

X = array(X, dtype=double, copy=False, order='C', subok=True)
Run Code Online (Sandbox Code Playgroud)

它是否为X(内存使用量 * 2)分配了新的内存空间?

jez*_*jez 5

NumPy的文档有这么一段有关copy参数的array构造函数:

如果为 true(默认),则复制对象。否则,仅当数组返回副本、obj 是嵌套序列或需要副本以满足任何其他要求(dtype、顺序等)时,才会进行副本。

您提供了“其他要求”之一的示例,dtype. 所以答案是,在这种情况下,copy=False被忽略,因为必须进行复制才能将 float32 内容转换为更高的精度。