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

Python中Numpy的深拷貝和淺拷貝

 更新時間:2022年05月24日 17:05:35   作者:sgzqc  
這篇文章主要介紹了Python中Numpy的深拷貝和淺拷貝,通過講解Python中對Numpy數(shù)組操作的淺拷貝和深拷貝的概念和背后的原理展開全文,需要的小伙伴可以參考一下

1. 引言

深拷貝和淺拷貝是Python中重要的概念,本文重點介紹在NumPy中深拷貝和淺拷貝相關操作的定義和背后的原理。
閑話少說,我們直接開始吧!

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的值應該為多少?
運行上述代碼后,我們得到輸出如下:

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

2.2 問題剖析

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

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

所以,此時如果我們修改數(shù)組??original_array??中的某個元素,`copy_array

??由于和??original_array`公用同一塊內存,所以其中的元素也會發(fā)生相應的變化。

3. 深拷貝

3.1 舉個栗子

如果我們想要對??Numpy??數(shù)組執(zhí)行深拷貝,此時我們可以使用函數(shù)??copy()??。

相關的樣例代碼如下:

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ā)生變化,這是由于我們使用了深拷貝。

此時的內存地址如下:

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

4. 技巧總結

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

4.1 判斷是否指向同一內存

如果我們需要知道兩個變量是否指向同一塊內存地址,我們可以方便地使用??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í)行同一塊內存;同時在深拷貝中,新的數(shù)組是原始數(shù)據(jù)的單獨的拷貝,它指向一塊新的內存地址。

5. 總結

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

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

相關文章

  • 詳解Django定時任務模塊設計與實踐

    詳解Django定時任務模塊設計與實踐

    這篇文章主要介紹了詳解Django定時任務模塊設計與實踐,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-07-07
  • python使用append合并兩個數(shù)組的方法

    python使用append合并兩個數(shù)組的方法

    這篇文章主要介紹了python使用append合并兩個數(shù)組的方法,涉及Python中append方法的使用技巧,需要的朋友可以參考下
    2015-04-04
  • python3.6編寫的單元測試示例

    python3.6編寫的單元測試示例

    這篇文章主要介紹了python3.6編寫的單元測試,結合實例形式分析了Python3.6使用unittest模塊進行單元測試的相關操作技巧與注意事項,需要的朋友可以參考下
    2019-08-08
  • Python字符串對齊方法使用(ljust()、rjust()和center())

    Python字符串對齊方法使用(ljust()、rjust()和center())

    這篇文章主要介紹了Python字符串對齊方法使用(ljust()、rjust()和center()),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • Python使用re模塊實現(xiàn)信息篩選的方法

    Python使用re模塊實現(xiàn)信息篩選的方法

    這篇文章主要介紹了Python使用re模塊實現(xiàn)信息篩選的方法,結合實例形式分析了Python正則re模塊進行信息篩選操作的相關實現(xiàn)技巧及相關函數(shù)使用技巧,需要的朋友可以參考下
    2018-04-04
  • Python的互斥鎖與信號量詳解

    Python的互斥鎖與信號量詳解

    這篇文章主要介紹了Python的互斥鎖與信號量詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-09-09
  • Django 中間鍵和上下文處理器的使用

    Django 中間鍵和上下文處理器的使用

    這篇文章主要介紹了Django 中間鍵和上下文處理器的使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-03-03
  • tensorflow卷積神經(jīng)Inception?V3網(wǎng)絡結構代碼解析

    tensorflow卷積神經(jīng)Inception?V3網(wǎng)絡結構代碼解析

    這篇文章主要為大家介紹了卷積神經(jīng)Inception?V3網(wǎng)絡結構代碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • python+appium實現(xiàn)自動化測試的示例代碼

    python+appium實現(xiàn)自動化測試的示例代碼

    appium是一個開源的測試自動化框架,可以與原生的、混合的和移動的web應用程序使用,本文主要介紹了python+appium實現(xiàn)自動化測試的示例代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • python使用原始套接字發(fā)送二層包(鏈路層幀)的方法

    python使用原始套接字發(fā)送二層包(鏈路層幀)的方法

    今天小編就為大家分享一篇python使用原始套接字發(fā)送二層包(鏈路層幀)的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07

最新評論