Python 关于np.array函数中的布尔参数复制
我不理解np.array函数中参数copy=True的意义。我查阅了文档,但无法理解它。您能用简单的话给我解释一下吗 复制:bool,可选 如果为true(默认),则复制对象。否则,将提供一份副本 仅当Python 关于np.array函数中的布尔参数复制,python,numpy,Python,Numpy,我不理解np.array函数中参数copy=True的意义。我查阅了文档,但无法理解它。您能用简单的话给我解释一下吗 复制:bool,可选 如果为true(默认),则复制对象。否则,将提供一份副本 仅当\uuuu数组\uuuuu返回副本时,如果obj是嵌套序列, 或者如果需要副本来满足任何其他要求 (数据类型、顺序等) 当您将另一个numpy数组传递给np.array时,您可以将其内容复制到内存中的新对象,也可以不复制。通常,您想要复制,因为您不想修改原始数组,但在某些情况下,这不是一件好事。当
\uuuu数组\uuuuu
返回副本时,如果obj
是嵌套序列,
或者如果需要副本来满足任何其他要求
(数据类型、顺序等)
当您将另一个numpy数组传递给np.array
时,您可以将其内容复制到内存中的新对象,也可以不复制。通常,您想要复制,因为您不想修改原始数组,但在某些情况下,这不是一件好事。当你写作时
a1 = np.array([1, 2, 3])
a2 = np.array(a1, copy=False)
a1[0] = 50
print(a1)
# [50, 2, 3]
print(a2)
# [50 2 3]
原始数据不会被复制。当原始对象非常大时,最好不要复制它以提高内存效率
有三种情况下,即使您将其设置为false,文档仍将创建副本
\uuuuu数组
返回一个副本。当您通过np.array(obj)
将obj
转换为numpy数组时,如果obj.\uuuuuu数组\uuuuu
返回其数组内容的副本,则numpy对象也将包含副本orig = np.array([1, 2, 3])
modified = np.array(orig, dtype=float, copy=False)
modified[0] = 50
print(modified)
# [50. 2. 3.]
print(orig)
# [1, 2, 3]
在上面的示例中,您要求numpy将所有数据转换为
float
。如果不将数据复制到一个新对象,它不可能做到这一点。因此,“需要一份副本来满足这一要求”。numpy将忽略copy=False
不要太担心它。大多数用户不使用它。大多数情况下,默认设置是ok。