<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

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

          共 2942字,需瀏覽 6分鐘

           ·

          2021-05-16 16:08

          1. 本文介紹

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

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


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

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

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

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

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

          結(jié)果如下:



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

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

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

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

          結(jié)果如下:



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

          ③ 調(diào)用數(shù)組對(duì)象的copy方法,實(shí)現(xiàn)底層數(shù)據(jù)的復(fù)制,而不是返回底層數(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)

          結(jié)果如下:



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

          3. numpy中,應(yīng)該如何使用切片?

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

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

          對(duì)于切片,這里有幾點(diǎn)需要注意的。

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

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



          下面用幾個(gè)例子,來(lái)好好練習(xí)一下吧!

          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

          # 當(dāng)start、stop、step為負(fù)數(shù)的時(shí)候,理解起來(lái)就稍微難一點(diǎn);
          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

          結(jié)果如下:



          更多閱讀



          用 Python 進(jìn)行 OCR 圖像識(shí)別


          用 XGBoost 進(jìn)行時(shí)間序列預(yù)測(cè)


          5 分鐘快速上手 pytest 測(cè)試框架

          特別推薦




          點(diǎn)擊下方閱讀原文加入社區(qū)會(huì)員

          瀏覽 56
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  免费黄色成人在线观看 | 91电影在线 亚洲精品 | 九九色网 | 国产骚婷婷 | 欧美色图9 |