最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

NumPy 數(shù)組的復(fù)制的幾種實現(xiàn)方法

 更新時間:2026年01月06日 09:36:38   作者:溯維_Particle  
本文詳細講解了在NumPy中操作數(shù)組時的三種復(fù)制機制,包括無復(fù)制、視圖/淺復(fù)制以及深復(fù)制,下面就來詳細的介紹一下這三種復(fù)制的實現(xiàn),感興趣的可以來了解一下

在 NumPy 中操作數(shù)組時,理解數(shù)據(jù)的復(fù)制機制是避免邏輯錯誤和內(nèi)存浪費的關(guān)鍵。新手常因混淆 “復(fù)制” 與 “引用” 而踩坑,本文將系統(tǒng)講解三種場景:無復(fù)制、視圖(淺復(fù)制)和深復(fù)制。

1  無復(fù)制(No Copy at All)

簡單賦值或函數(shù)傳參時,不會復(fù)制數(shù)組對象或其數(shù)據(jù),只是對同一對象的 “重命名” 或 “引用傳遞”。

1.1  簡單賦值:同一對象的多個名稱

import numpy as np

# 定義原始數(shù)組
a = np.array([[0, 1, 2, 3],
              [4, 5, 6, 7],
              [8, 9, 10, 11]])
b = a  # 無新對象創(chuàng)建,b是a的“別名”
print(b is a)  # 輸出 True,證明是同一對象

此時修改 b 會直接改變 a,因為它們指向同一塊內(nèi)存。

1.2  函數(shù)調(diào)用的引用傳遞

Python 中可變對象(如 NumPy 數(shù)組)以引用方式傳遞給函數(shù),函數(shù)內(nèi)的操作會影響原對象。

2  視圖 / 淺復(fù)制(View or Shallow Copy)

視圖會創(chuàng)建新的數(shù)組對象,但共享原始數(shù)組的數(shù)據(jù)。新數(shù)組是原數(shù)據(jù)的 “窗口”,數(shù)據(jù)本身未被復(fù)制。

2.1  view()方法創(chuàng)建視圖

c = a.view()
print(c is a)        # 輸出 False,c是新對象
print(c.base is a)   # 輸出 True,c的底層數(shù)據(jù)由a持有
print(c.flags.owndata)  # 輸出 False,c不“擁有”自己的數(shù)據(jù)

2.2  視圖的 “形狀獨立,數(shù)據(jù)共享”

視圖可以獨立修改形狀,不影響原數(shù)組;但修改數(shù)據(jù)會同步影響原數(shù)組。

c = c.reshape((2, 6))  # 修改c的形狀
print(a.shape)         # 原數(shù)組a形狀仍為(3, 4)

c[0, 4] = 1234         # 修改c的數(shù)據(jù)
print(a)
# 輸出:
# array([[   0,    1,    2,    3],
#        [1234,    5,    6,    7],
#        [   8,    9,   10,   11]])

2.3  數(shù)組切片返回視圖

對數(shù)組切片時,返回的是原數(shù)組的視圖,而非新數(shù)組。

s = a[:, 1:3]  # 切片得到視圖s
s[:] = 10      # 修改視圖的數(shù)據(jù)(注意是s[:] = 10,不是s = 10)
print(a)
# 輸出:
# array([[   0,   10,   10,    3],
#        [1234,   10,   10,    7],
#        [   8,   10,   10,   11]])

注意:s[:] = 10 是修改視圖數(shù)據(jù),而 s = 10 是將 s 重新賦值為新對象,不再關(guān)聯(lián)原數(shù)組。

3  深復(fù)制(Deep Copy)

深復(fù)制會創(chuàng)建原數(shù)組及其數(shù)據(jù)的完整副本,新數(shù)組擁有獨立的內(nèi)存空間,與原數(shù)組完全解耦。

3.1  copy()方法創(chuàng)建深復(fù)制

d = a.copy()
print(d is a)        # 輸出 False,d是新對象
print(d.base is a)   # 輸出 False,d與a無任何共享

3.2  深復(fù)制的數(shù)據(jù)獨立性

修改深復(fù)制的數(shù)組不會影響原數(shù)組。

d[0, 0] = 9999
print(a)  # 原數(shù)組a不受影響,輸出與之前一致

3.3  大數(shù)組切片的內(nèi)存優(yōu)化

當原始數(shù)組很大,且僅需要其一小部分時,對切片進行深復(fù)制可釋放原始數(shù)組的內(nèi)存。

a = np.arange(int(1e8))  # 創(chuàng)建超大數(shù)組
b = a[:100].copy()       # 對切片深復(fù)制,b擁有獨立數(shù)據(jù)
del a                    # 可釋放a占用的大量內(nèi)存

如果用 b = a[:100](視圖),a 會被 b 引用,即使 del a 也無法釋放內(nèi)存。

4  總結(jié):三種方式對比

類型是否創(chuàng)建新對象是否共享數(shù)據(jù)操作 / 方法數(shù)據(jù)修改影響
無復(fù)制簡單賦值、函數(shù)傳參原數(shù)組與新變量相互影響
視圖(淺復(fù)制)view()、數(shù)組切片數(shù)據(jù)修改相互影響,形狀修改不影響原數(shù)組
深復(fù)制copy()原數(shù)組與新數(shù)組完全獨立

掌握這三種機制,能讓你在處理 NumPy 數(shù)組時更精準地控制內(nèi)存和數(shù)據(jù)一致性,寫出更健壯的代碼。

到此這篇關(guān)于NumPy 數(shù)組的復(fù)制的幾種實現(xiàn)方法的文章就介紹到這了,更多相關(guān)NumPy 數(shù)組復(fù)制內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python生成隨機數(shù)的多種方法

    Python生成隨機數(shù)的多種方法

    Python生成隨機數(shù)主要通過random、secrets和numpy.random模塊實現(xiàn),random適用于日常場景,secrets確保密碼學(xué)安全,numpy.random適合科學(xué)計算,了解各模塊功能和示例代碼,可以幫助你根據(jù)需求選擇合適的生成方法,需要的朋友可以參考下
    2026-04-04
  • python和php哪個容易學(xué)

    python和php哪個容易學(xué)

    在本篇文章里小編給大家整理的是一篇關(guān)于python和php哪個學(xué)起來簡單的相關(guān)文章,需要的朋友們可以參考下。
    2020-06-06
  • python dataframe常見操作方法:實現(xiàn)取行、列、切片、統(tǒng)計特征值

    python dataframe常見操作方法:實現(xiàn)取行、列、切片、統(tǒng)計特征值

    今天小編就為大家分享一篇python dataframe常見操作方法:實現(xiàn)取行、列、切片、統(tǒng)計特征值,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • 詳解Python?flask的前后端交互

    詳解Python?flask的前后端交互

    這篇文章主要為大家詳細介紹了Python?flask的前后端交互,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • 解決django無法訪問本地static文件(js,css,img)網(wǎng)頁里js,cs都加載不了

    解決django無法訪問本地static文件(js,css,img)網(wǎng)頁里js,cs都加載不了

    這篇文章主要介紹了解決django無法訪問本地static文件(js,css,img)網(wǎng)頁里js,cs都加載不了的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • 使用PyQt4 設(shè)置TextEdit背景的方法

    使用PyQt4 設(shè)置TextEdit背景的方法

    今天小編就為大家分享一篇使用PyQt4 設(shè)置TextEdit背景的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • Python帶參數(shù)的裝飾器運行原理解析

    Python帶參數(shù)的裝飾器運行原理解析

    這篇文章主要介紹了Python帶參數(shù)的裝飾器運行原理解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-06-06
  • python刪除指定類型(或非指定)的文件實例詳解

    python刪除指定類型(或非指定)的文件實例詳解

    這篇文章主要介紹了python刪除指定類型(或非指定)的文件,以實例形式較為詳細的分析了Python刪除文件的相關(guān)技巧,需要的朋友可以參考下
    2015-07-07
  • 詳解Python如何利用Shelve進行數(shù)據(jù)存儲

    詳解Python如何利用Shelve進行數(shù)據(jù)存儲

    Shelve是Python標準庫中的一個模塊,用于實現(xiàn)簡單的數(shù)據(jù)持久化,本文將詳細介紹Shelve模塊的功能和用法,并提供豐富的示例代碼,希望對大家有所幫助
    2023-11-11
  • Python Final 類型限定符詳解

    Python Final 類型限定符詳解

    Python的Final是一種類型限定符,用于標記變量、屬性或函數(shù)參數(shù),防止重新賦值,限制類的繼承和方法重寫,提高代碼質(zhì)量和可維護性,具有一定的參考價值,感興趣的可以了解一下
    2026-05-05

最新評論

乌鲁木齐市| 封开县| 和林格尔县| 临沭县| 双辽市| 凤城市| 泽州县| 荆门市| 涟水县| 桦南县| 张家川| 永吉县| 西畴县| 龙里县| 饶河县| 乌什县| 宜宾县| 东宁县| 从江县| 通化市| 眉山市| 磐安县| 双桥区| 辽中县| 宜阳县| 壶关县| 江安县| 金塔县| 应城市| 江孜县| 都安| 始兴县| 桃园县| 宜章县| 玉树县| 大田县| 宁津县| 许昌市| 遂平县| 惠水县| 五指山市|