Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 关于np.array函数中的布尔参数复制_Python_Numpy - Fatal编程技术网

Python 关于np.array函数中的布尔参数复制

Python 关于np.array函数中的布尔参数复制,python,numpy,Python,Numpy,我不理解np.array函数中参数copy=True的意义。我查阅了文档,但无法理解它。您能用简单的话给我解释一下吗 复制:bool,可选 如果为true(默认),则复制对象。否则,将提供一份副本 仅当\uuuu数组\uuuuu返回副本时,如果obj是嵌套序列, 或者如果需要副本来满足任何其他要求 (数据类型、顺序等) 当您将另一个numpy数组传递给np.array时,您可以将其内容复制到内存中的新对象,也可以不复制。通常,您想要复制,因为您不想修改原始数组,但在某些情况下,这不是一件好事。当

我不理解np.array函数中参数copy=True的意义。我查阅了文档,但无法理解它。您能用简单的话给我解释一下吗

复制:bool,可选

如果为true(默认),则复制对象。否则,将提供一份副本 仅当
\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。