欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

1. 引言

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

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

2. 淺拷貝

2.1 問題引入

我們來舉個(gè)栗子,如下所示我們有兩個(gè)數(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í)如果我們對(duì)數(shù)組a做如下改變,代碼如下:

import numpy as np

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

a [0] = 42

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

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

運(yùn)行上述代碼后,我們得到輸出如下:

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

2.2 問題剖析

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

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

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

3. 深拷貝

3.1 舉個(gè)栗子

如果我們想要對(duì)Numpy數(shù)組執(zhí)行深拷貝,此時(shí)我們可以使用函數(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í),如果我們改變數(shù)組a中的元素,代碼如下:

import numpy as np

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

a [0] = 42

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

此時(shí)的代碼輸出如下:

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

3.2 探究原因

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

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

4. 技巧總結(jié)

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

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

如果我們需要知道兩個(gè)變量是否指向同一塊內(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ù)組,但本文中所涉及的知識(shí)也適用于Python中的列表和字典等其他數(shù)據(jù)類型。

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

5. 總結(jié)

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

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

相關(guān)文章

  • Python實(shí)現(xiàn)讀取Properties配置文件的方法

    Python實(shí)現(xiàn)讀取Properties配置文件的方法

    這篇文章主要介紹了Python實(shí)現(xiàn)讀取Properties配置文件的方法,結(jié)合實(shí)例形式分析了Python讀取Properties配置文件類的定義與使用相關(guān)操作技巧,需要的朋友可以參考下
    2018-03-03
  • python裝飾器常見使用方法分析

    python裝飾器常見使用方法分析

    這篇文章主要介紹了python裝飾器常見使用方法,結(jié)合實(shí)例形式分析了Python裝飾器的功能及三種常見的裝飾模式使用技巧,需要的朋友可以參考下
    2019-06-06
  • Django處理多用戶類型的方法介紹

    Django處理多用戶類型的方法介紹

    這篇文章主要給大家介紹了關(guān)于Django處理多用戶類型的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Django具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • Python基于多線程實(shí)現(xiàn)抓取數(shù)據(jù)存入數(shù)據(jù)庫的方法

    Python基于多線程實(shí)現(xiàn)抓取數(shù)據(jù)存入數(shù)據(jù)庫的方法

    這篇文章主要介紹了Python基于多線程實(shí)現(xiàn)抓取數(shù)據(jù)存入數(shù)據(jù)庫的方法,結(jié)合實(shí)例形式分析了Python使用數(shù)據(jù)庫類與多線程類進(jìn)行數(shù)據(jù)抓取與寫入數(shù)據(jù)庫操作的具體使用技巧,需要的朋友可以參考下
    2018-06-06
  • 詳解Django將秒轉(zhuǎn)換為xx天xx時(shí)xx分

    詳解Django將秒轉(zhuǎn)換為xx天xx時(shí)xx分

    這篇文章主要介紹了Django將秒轉(zhuǎn)換為xx天xx時(shí)xx分,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • 使用FFmpeg來無損壓縮視頻文件的操作方法

    使用FFmpeg來無損壓縮視頻文件的操作方法

    FFmpeg是業(yè)內(nèi)有名的開源圖像視頻處理程序,在許多視頻剪輯軟件、圖像處理軟件中,都使用的FFmpeg,還有比如OBS這樣的導(dǎo)播軟件里面也使用了FFmpeg,FFmpeg的功能十分強(qiáng)大,遠(yuǎn)不止視頻壓縮的功能,本文介紹使用FFmpeg來無損壓縮視頻文件的操作方法,感興趣的朋友一起看看吧
    2023-12-12
  • 基于python 開立方的注意事項(xiàng)說明

    基于python 開立方的注意事項(xiàng)說明

    這篇文章主要介紹了基于python 開立方的注意事項(xiàng)說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • python發(fā)布模塊的步驟分享

    python發(fā)布模塊的步驟分享

    這篇文章主要介紹了python發(fā)布模塊的步驟,需要的朋友可以參考下
    2014-02-02
  • python實(shí)現(xiàn)高效的遺傳算法

    python實(shí)現(xiàn)高效的遺傳算法

    這篇文章主要介紹了python實(shí)現(xiàn)高效的遺傳算法。想了解算法的同學(xué),可以參考下
    2021-04-04
  • Python 字典與字符串的互轉(zhuǎn)實(shí)例

    Python 字典與字符串的互轉(zhuǎn)實(shí)例

    下面小編就為大家?guī)硪黄狿ython 字典與字符串的互轉(zhuǎn)實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-01-01

最新評(píng)論