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

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

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

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

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

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

1.1  簡(jiǎn)單賦值:同一對(duì)象的多個(gè)名稱(chēng)

import numpy as np

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

此時(shí)修改 b 會(huì)直接改變 a,因?yàn)樗鼈冎赶蛲粔K內(nèi)存。

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

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

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

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

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

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

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

視圖可以獨(dú)立修改形狀,不影響原數(shù)組;但修改數(shù)據(jù)會(huì)同步影響原數(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ù)組切片返回視圖

對(duì)數(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 重新賦值為新對(duì)象,不再關(guān)聯(lián)原數(shù)組。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

相關(guān)文章

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

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

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

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

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

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

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

    詳解Python?flask的前后端交互

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

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

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

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

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

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

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

    python刪除指定類(lèi)型(或非指定)的文件實(shí)例詳解

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

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

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

    Python Final 類(lèi)型限定符詳解

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

最新評(píng)論

涟水县| 楚雄市| 罗山县| 天峻县| 大姚县| 桐梓县| 兴文县| 合江县| 永善县| 阜新| 涪陵区| 山东省| 资中县| 苍南县| 潞城市| 西丰县| 宾川县| 佳木斯市| 夏津县| 河东区| 安多县| 北安市| 合水县| 谷城县| 嘉祥县| 镇赉县| 宁城县| 石河子市| 于田县| 台前县| 额济纳旗| 垫江县| 大理市| 体育| 武冈市| 和林格尔县| 黄陵县| 旌德县| 常德市| 临桂县| 清苑县|