1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        對比 Python 原生切片,講述 Numpy 數(shù)組切片!

        共 2942字,需瀏覽 6分鐘

         ·

        2021-05-16 16:08

        1. 本文介紹

        今天為大家介紹以下內(nèi)容:

        • Ⅰ Python原生切片,與numpy數(shù)組切片,有哪些不同?
        • Ⅱ numpy中,應該如何使用切片?


        2. Python原生切片,與numpy數(shù)組切片,有哪些不同?

        這里有兩個概念,大家需要了解一下。

        • 淺拷貝:相當于B將A的數(shù)據(jù),復制了一遍,并在本地從新開了一片內(nèi)存區(qū)域,用于存放B。此時,改變A/B中的數(shù)據(jù),并不會影響對方;
        • 視圖:相當于B和A共用一塊兒內(nèi)存區(qū)域,當改變A/B中的數(shù)據(jù),對方也會跟著改變;
        ① 數(shù)組切片,返回的是原始數(shù)組的視圖

        list1 = [1,2,3]
        print(list1)
        list2 = list1[1:]
        print(list2)

        # 此時,修改list2中某一個元素,查看原始列表的元素是否發(fā)生變化?
        list2[0] = 666
        print(list2)
        print(list1)

        結果如下:



        可以發(fā)現(xiàn):修改list2中的元素后,list1中的元素并沒有改變。

        ② 原生python切片,返回的是原始數(shù)組的淺拷貝

        array1 = np.array([1,3,5,2,4])
        print(array1)
        array2 = array1[2:]
        print(array2)

        # 此時,修改array2中某一個元素,查看原始數(shù)組的元素是否發(fā)生變化?
        array2[0] = 888
        print(array2)
        print(array1)

        結果如下:



        可以發(fā)現(xiàn):修改array2中的元素后,array1中的元素跟著改變了。

        ③ 調(diào)用數(shù)組對象的copy方法,實現(xiàn)底層數(shù)據(jù)的復制,而不是返回底層數(shù)據(jù)的視圖

        array3 = np.array([1,2,3,4,5,6])
        print(array3)
        array4 = array3.copy()
        print(array4)

        array4[2] = 666
        print(array4)
        print(array3)

        結果如下:



        可以發(fā)現(xiàn):修改array4中的元素后,array3中的元素沒有變。

        3. numpy中,應該如何使用切片?

        切片的使用,不管是原生python切片,還是數(shù)組切片,語法基本上是相同的。

        • 語法:[start:stop:step]
        • 參數(shù):start代表起始索引,stop代表終止索引,step代表步長;

        對于切片,這里有幾點需要注意的。

        • 注意1:索引是左臂右開區(qū)間,比如說x[0:9:1],只能是取到索引等于0處的元素到索引等于8處的元素,而取不到索引等于9的這個元素。記住元素索引都是0開始的,第一個亓素的索引是0.第一個亓素的索引是1,以此類推下去。
        • 注意2:當不寫start代表從起始索引處取數(shù),當不寫stop代表一直取數(shù)到最后位置。當不寫step步長,代表使用默認步長1。
        • 注意3:start、stop、step都可以是負數(shù),具體什么含義,最好在下面的例子中好好體會。

        黃同學做了一張圖,幫你理解“切片”。



        下面用幾個例子,來好好練習一下吧!

        a = np.arange(10)
        print(a)             # array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

        print(a[:3])          # 0 1 2
        print(a[3:6])         # 3 4 5
        print(a[6:])          # 6 7 8 9
        print(a[::])          # 0 1 2 3 4 5 6 7 8 9
        print(a[:])           # 0 1 2 3 4 5 6 7 8 9
        print(a[::3])         # 0 3 6 9
        print(a[1::3])        # 1 4 7
        print(a[2::3])        # 2 5 8

        # 當start、stop、step為負數(shù)的時候,理解起來就稍微難一點;
        print(a[::-1])        # 9 8 7 6 5 4 3 2 1 0
        print(a[:-4:-1])      # 9 8 7 
        print(a[-4:-7:-1])    # 6 5 4
        print(a[-7::-1])      # 3 2 1 0

        結果如下:



        更多閱讀



        用 Python 進行 OCR 圖像識別


        用 XGBoost 進行時間序列預測


        5 分鐘快速上手 pytest 測試框架

        特別推薦




        點擊下方閱讀原文加入社區(qū)會員

        瀏覽 56
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            ⅹxxxxhd亚洲日本hd老师 | 亚洲穿丝袜摆弄女尸av | 在健身房里啪啪嗯受不了了 | 欧美成人毛片 | 72式性真人无遮挡没费视频 | 18禁成人免费网站 | 野外被弄了h野战 | 啪乖趴好嗯~h教授 | 色色色色色综合 | 影音先锋成人AV |