當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python numpy copy用法及代碼示例


本文簡要介紹 python 語言中 numpy.copy 的用法。

用法:

numpy.copy(a, order='K', subok=False)

返回給定對象的數組副本。

參數

a array_like

輸入數據。

order {‘C’、‘F’、‘A’、‘K’},可選

控製副本的內存布局。 “C”表示C-order,“F”表示F-order,“A”表示“F”,如果a是 Fortran 連續的,否則為“C”。 ‘K’表示匹配布局a盡可能接近。 (請注意,此函數和numpy.ndarray.copy非常相似,但其 order= 參數具有不同的默認值。)

subok 布爾型,可選

如果為 True,則子類將為 passed-through,否則返回的數組將被強製為 base-class 數組(默認為 False)。

返回

arr ndarray

a. 數組解釋

注意

這相當於:

>>> np.array(a, copy=True)

例子

創建一個數組 x,帶有一個引用 y 和一個副本 z:

>>> x = np.array([1, 2, 3])
>>> y = x
>>> z = np.copy(x)

請注意,當我們修改 x 時,y 會改變,但 z 不會改變:

>>> x[0] = 10
>>> x[0] == y[0]
True
>>> x[0] == z[0]
False

請注意,np.copy 會清除之前設置的 WRITEABLE=False 標誌。

>>> a = np.array([1, 2, 3])
>>> a.flags["WRITEABLE"] = False
>>> b = np.copy(a)
>>> b.flags["WRITEABLE"]
True
>>> b[0] = 3
>>> b
array([3, 2, 3])

請注意,np.copy 是淺複製,不會複製數組內的對象元素。這對於包含 Python 對象的數組非常重要。新數組將包含相同的對象,如果該對象可以修改(可變),則可能會導致意外:

>>> a = np.array([1, 'm', [2, 3, 4]], dtype=object)
>>> b = np.copy(a)
>>> b[2][0] = 10
>>> a
array([1, 'm', list([10, 3, 4])], dtype=object)

要確保複製 object 數組中的所有元素,請使用 copy.deepcopy

>>> import copy
>>> a = np.array([1, 'm', [2, 3, 4]], dtype=object)
>>> c = copy.deepcopy(a)
>>> c[2][0] = 10
>>> c
array([1, 'm', list([10, 3, 4])], dtype=object)
>>> a
array([1, 'm', list([2, 3, 4])], dtype=object)

相關用法


注:本文由純淨天空篩選整理自numpy.org大神的英文原創作品 numpy.copy。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。