91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python中Numpy的深拷貝和淺拷貝怎么使用

發布時間:2022-05-24 17:27:59 來源:億速云 閱讀:178 作者:iii 欄目:開發技術

這篇“Python中Numpy的深拷貝和淺拷貝怎么使用”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Python中Numpy的深拷貝和淺拷貝怎么使用”文章吧。

    1. 引言

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

    2. 淺拷貝

    2.1 問題引入

    我們來舉個栗子,如下所示我們有兩個數組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]

    此時如果我們對數組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]?? ,但是運行上述代碼后我們發現??a??和??b??的值均發生了相應的改變。這主要是由于在??Numpy??中對變量的賦值操作,實際上發生的為淺拷貝。

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

    Python中Numpy的深拷貝和淺拷貝怎么使用

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

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

    3. 深拷貝

    3.1 舉個栗子

    如果我們想要對??Numpy??數組執行深拷貝,此時我們可以使用函數??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]

    此時,如果我們改變數組??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 探究原因

    觀察上述輸出,我們可以清楚地看到數組??a??發生了改變而數組??b??沒有發生變化,這是由于我們使用了深拷貝。

    此時的內存地址如下:

    Python中Numpy的深拷貝和淺拷貝怎么使用

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

    4. 技巧總結

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

    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 其他數據類型

    盡管本文中所有的示例都使用了NumPy數組,但本文中所涉及的知識也適用于Python中的列表和字典等其他數據類型。
    總之,我們需要時刻記載心中:在淺拷貝中,原始數組和新的數組共同執行同一塊內存;同時在深拷貝中,新的數組是原始數據的單獨的拷貝,它指向一塊新的內存地址。

    以上就是關于“Python中Numpy的深拷貝和淺拷貝怎么使用”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    永兴县| 民县| 大城县| 麻江县| 漠河县| 渝北区| 红原县| 德昌县| 黎川县| 和顺县| 芷江| 榆林市| 桂东县| 阳高县| 龙州县| 扎鲁特旗| 那曲县| 高淳县| 揭阳市| 屏东市| 新泰市| 筠连县| 嘉义县| 桐城市| 玉山县| 高要市| 拜城县| 观塘区| 晋州市| 寻甸| 合水县| 乌什县| 镇宁| 旬阳县| 来凤县| 醴陵市| 宝应县| 昔阳县| 彭山县| 崇义县| 辽宁省|