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

一文帶你搞懂Numpy中的深拷貝和淺拷貝

 更新時間:2022年04月14日 10:21:26   作者:趙卓不凡  
深拷貝和淺拷貝是Python中重要的概念,本文將重點介紹在NumPy中深拷貝和淺拷貝相關(guān)操作的定義和背后的原理,快跟隨小編一起來學(xué)習(xí)一下吧

1. 引言

深拷貝和淺拷貝是Python中重要的概念,本文重點介紹在NumPy中深拷貝和淺拷貝相關(guān)操作的定義和背后的原理。

閑話少說,我們直接開始吧!

2. 淺拷貝

2.1 問題引入

我們來舉個栗子,如下所示我們有兩個數(shù)組a和b,樣例代碼如下:

import numpy as np

a = np.array([1, 2, 3])
b = a

print('a =', a)
print('b =', b)

輸出如下:

a = [1 2 3]
b = [1 2 3]

此時如果我們對數(shù)組a做如下改變,代碼如下:

import numpy as np

a = np.array([1, 2, 3])
b = a

a [0] = 42

print('a =', a)
print('b =', b)

那么我們的問題為: 此時b的值應(yīng)該為多少?

運行上述代碼后,我們得到輸出如下:

a = [42 2 3]
b = [42 2 3]

2.2 問題剖析

也許有人會覺得輸出應(yīng)該為a=[42 2 3] 和 b=[1 2 3] ,但是運行上述代碼后我們發(fā)現(xiàn)a和b的值均發(fā)生了相應(yīng)的改變。這主要是由于在Numpy中對變量的賦值操作,實際上發(fā)生的為淺拷貝。

換句話說,此時兩個變量指向同一塊內(nèi)存地址,如下所示:

所以,此時如果我們修改數(shù)組original_array中的某個元素,copy_array 由于和original_array公用同一塊內(nèi)存,所以其中的元素也會發(fā)生相應(yīng)的變化。

3. 深拷貝

3.1 舉個栗子

如果我們想要對Numpy數(shù)組執(zhí)行深拷貝,此時我們可以使用函數(shù)copy()。相關(guān)的樣例代碼如下:

import numpy as np

a = np.array([1, 2, 3])
b = a.copy()

print('a =', a)
print('b =', b)

輸出如下:

a = [1 2 3]
b = [1 2 3]

此時,如果我們改變數(shù)組a中的元素,代碼如下:

import numpy as np

a = np.array([1, 2, 3])
b = a.copy()

a [0] = 42

print('a =', a)
print('b =', b)

此時的代碼輸出如下:

a = [42 2 3]
b = [1 2 3]

3.2 探究原因

觀察上述輸出,我們可以清楚地看到數(shù)組a發(fā)生了改變而數(shù)組b沒有發(fā)生變化,這是由于我們使用了深拷貝。此時的內(nèi)存地址如下:

由于 original_array和copy_array指向不同的內(nèi)存地址空間,所以此時我們對original_array的改變并不會對copy_array帶來影響。

4. 技巧總結(jié)

經(jīng)過上述對深拷貝和淺拷貝的舉例和示例,相信大家都已有了清晰的認(rèn)識,接著我們對上述知識點進行總結(jié),歸納如下:

4.1 判斷是否指向同一內(nèi)存

如果我們需要知道兩個變量是否指向同一塊內(nèi)存地址,我們可以方便地使用is操作。

淺拷貝示例:

a = np.array([1, 2, 3])
b = a
print(b is a)

輸出如下:

True

深拷貝示例:

a = np.array([1, 2, 3])
b = a.copy()
print(b is a)

輸出如下:

False

4.2 其他數(shù)據(jù)類型

盡管本文中所有的示例都使用了NumPy數(shù)組,但本文中所涉及的知識也適用于Python中的列表和字典等其他數(shù)據(jù)類型。

總之,我們需要時刻記載心中:在淺拷貝中,原始數(shù)組和新的數(shù)組共同執(zhí)行同一塊內(nèi)存;同時在深拷貝中,新的數(shù)組是原始數(shù)據(jù)的單獨的拷貝,它指向一塊新的內(nèi)存地址。

5. 總結(jié)

本文重點介紹了Python中對Numpy數(shù)組操作的淺拷貝和深拷貝的概念和背后的原理,同時給出了相應(yīng)的代碼示例。

到此這篇關(guān)于一文帶你搞懂Numpy中的深拷貝和淺拷貝的文章就介紹到這了,更多相關(guān)Numpy深拷貝 淺拷貝內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python進行數(shù)據(jù)可視化Plotly與Dash的應(yīng)用小結(jié)

    Python進行數(shù)據(jù)可視化Plotly與Dash的應(yīng)用小結(jié)

    數(shù)據(jù)可視化是數(shù)據(jù)分析中至關(guān)重要的一環(huán),它能夠幫助我們更直觀地理解數(shù)據(jù)并發(fā)現(xiàn)隱藏的模式和趨勢,本文主要介紹了Python進行數(shù)據(jù)可視化Plotly與Dash的應(yīng)用小結(jié),具有一定的參考價值,感興趣的可以了解一下
    2024-04-04
  • pandas讀取csv格式數(shù)據(jù)時header參數(shù)設(shè)置方法

    pandas讀取csv格式數(shù)據(jù)時header參數(shù)設(shè)置方法

    本文主要介紹了pandas讀取csv格式數(shù)據(jù)時header參數(shù)設(shè)置方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • flask-restful使用總結(jié)

    flask-restful使用總結(jié)

    Flask-RESTful是一個用于快速創(chuàng)建RESTful API接口的Flask擴展。,這篇文章主要介紹了flask-restful使用總結(jié),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • Python腳本暴力破解柵欄密碼

    Python腳本暴力破解柵欄密碼

    在滲透測試當(dāng)中,免不了要進行密碼破解。本文通過好幾種方法給大家介紹python密碼破解,有通用腳本,F(xiàn)TP暴力破解腳本,SSH暴力破解,TELNET密碼暴力破解,感興趣的朋友一起學(xué)習(xí)吧
    2015-10-10
  • 教你如何使用Python開發(fā)一個釘釘群應(yīng)答機器人

    教你如何使用Python開發(fā)一個釘釘群應(yīng)答機器人

    在聊天工具大肆侵入我們生活各個方面的今天,各種消息無時無刻不在侵?jǐn)_我們的每一寸時間,這種情況下,一個聊天的機器人就很有必要了.今天,我們來學(xué)習(xí)一下使用 Python 開發(fā)一個釘釘?shù)膽?yīng)答機器人,助你「人生苦短,少回消息」,需要的朋友可以參考下
    2021-06-06
  • Python 作圖實現(xiàn)坐標(biāo)軸截斷(打斷)的效果

    Python 作圖實現(xiàn)坐標(biāo)軸截斷(打斷)的效果

    這篇文章主要介紹了Python 作圖實現(xiàn)坐標(biāo)軸截斷(打斷)的效果,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • Django數(shù)據(jù)庫遷移報錯InconsistentMigrationHistory

    Django數(shù)據(jù)庫遷移報錯InconsistentMigrationHistory

    最近在使用Django,學(xué)習(xí)了一下Django數(shù)據(jù)庫遷移,在執(zhí)行遷移命令時,突然報錯,本文就總結(jié)了一下原因,感興趣的小伙伴們可以參考一下
    2021-05-05
  • Numpy數(shù)值積分的實現(xiàn)

    Numpy數(shù)值積分的實現(xiàn)

    本文主要介紹了Numpy數(shù)值積分的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • 使用matplotlib修改坐標(biāo)軸,將y軸的間距設(shè)置為某一個值

    使用matplotlib修改坐標(biāo)軸,將y軸的間距設(shè)置為某一個值

    這篇文章主要介紹了使用matplotlib修改坐標(biāo)軸,將y軸的間距設(shè)置為某一個值方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Django框架之DRF 基于mixins來封裝的視圖詳解

    Django框架之DRF 基于mixins來封裝的視圖詳解

    今天小編就為大家分享一篇Django框架之DRF 基于mixins來封裝的視圖詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07

最新評論

常熟市| 寻乌县| 同德县| 民勤县| 马边| 虞城县| 井陉县| 丹江口市| 怀安县| 景宁| 景宁| 共和县| 宜川县| 梧州市| 邳州市| 大足县| 华宁县| 湛江市| 余姚市| 定结县| 饶平县| 台南市| 吉水县| 交城县| 青州市| 临夏县| 黄山市| 龙里县| 南江县| 张家港市| 比如县| 南投市| 兴仁县| 凤翔县| 大埔县| 仪陇县| 吉木萨尔县| 永登县| 毕节市| 策勒县| 濉溪县|