Numpy布爾索引和花式索引

Numpy布爾索引和花式索引

  1. 布爾索引:指的是一個由布爾值組成的數(shù)組可以作為一個數(shù)組的索引,返回的數(shù)據(jù)為True值對應(yīng)位置的值。布爾值數(shù)組長度必須和數(shù)組軸索引長度一致。

    #一維數(shù)組 
    arr1 = np.arange(5)
    """[0 1 2 3 4]"""
    bool1 = [True,False,False,True,False]
    arr1[bool1]
    array([0, 3]) #獲取到下標(biāo)0,3位置bool值為True的元素
    
    #二維數(shù)組
    arr2 = np.random.rand(5,4)
    """
    [[0.46997479 0.30359067 0.55125259 0.63899705]
     [0.37201402 0.53077412 0.62129647 0.18914937]
     [0.41954877 0.68191221 0.75394428 0.18423583]
     [0.70372303 0.6412821  0.12537964 0.04018929]
     [0.56545976 0.88056762 0.08840744 0.33807558]]"""
    bool1 = [True,False,False,True,False]
    arr2[bool1] # 獲取數(shù)組中下標(biāo)0,3位置bool值為True的行
    """
    [[0.46997479 0.30359067 0.55125259 0.63899705]
     [0.70372303 0.6412821  0.12537964 0.04018929]]
    """
    
    #布爾索引和切片組合
    arr2[bool1, 2] 
    # array([0.55125259, 0.12537964]) 
    arr2[bool1, 1:4] 
    """array([[0.30359067, 0.55125259, 0.63899705],
           [0.6412821 , 0.12537964, 0.04018929]])"""
    
    #布爾賦值
    #通過邏輯運算,把滿足條件的值設(shè)置為指定的值(后面會詳細講到)
    bool3 = arr2>0.5
    arr2[bool3] = 1
    """
    [[0.46997479 0.30359067 1.         1.        ]
     [0.37201402 1.         1.         0.18914937]
     [0.41954877 1.         1.         0.18423583]
     [1.         1.         0.12537964 0.04018929]
     [1.         1.         0.08840744 0.33807558]]
    """
    
  2. 花式索引:指的是用整數(shù)數(shù)組進行數(shù)據(jù)索引。根據(jù)索引數(shù)組的值作為目標(biāo)數(shù)組的某個軸的下標(biāo)來取值。對于使用一維整型數(shù)組作為索引,如果目標(biāo)是一維數(shù)組,那么索引的結(jié)果就是對應(yīng)位置的元素;如果目標(biāo)是二維數(shù)組,那么就是對應(yīng)下標(biāo)的行

    #這里的整數(shù)數(shù)組可以是Numpy的數(shù)組,也可以是Python的列表
    arr3=np.random.randint(100,size=(7,5))
    arr3
    """
    array([[21, 29, 51, 93, 18],
           [16, 79, 63, 55, 40],
           [98, 48, 61, 27, 63],
           [37,  3, 48, 54, 69],
           [92, 78, 92, 93, 17],
           [36, 43, 38, 46, 25],
           [41,  1, 10, 56, 99]])
    """
    # 使用花式索引,有順序
    arr3[[0,2,5]] #獲取對應(yīng)下標(biāo)的行
    """
    array([[21, 29, 51, 93, 18],
           [98, 48, 61, 27, 63],
           [36, 43, 38, 46, 25]])
    """
    arr3[[-2,-1]] #使用負的索引,從尾部選擇
    """
    array([[36, 43, 38, 46, 25],
           [41,  1, 10, 56, 99]])
    """
    
    #多個索引數(shù)組
    arr3[[0,3,5],[2,3,4]] #取出(0,2),(3,3),(5,4)元素
    """
    array([51, 54, 25])
    """
    
    arr3[[1,5,6,2]][:,[0,3,1,2]]
    """
    array([[16, 55, 79, 63],
           [36, 46, 43, 38],
           [41, 56,  1, 10],
           [98, 27, 48, 61]])
    """
    
    

    花式索引和切片不一樣,它總是將數(shù)據(jù)復(fù)制到一個新的數(shù)組中。?。?!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 目錄布爾索引花式索引 (Fancy Indexing)二者的聯(lián)系? 申明:本文中提到的數(shù)組就是特指numpy的數(shù)據(jù)...
    大聖Jonathan閱讀 23,051評論 7 12
  • 創(chuàng)建數(shù)組對象 axis為軸,n維數(shù)組有n個軸,axis的取值為1,2,3,4...,n 1、數(shù)組屬性 arr.as...
    nono輝閱讀 533評論 0 0
  • 第1章 Numpy數(shù)組對象 Numpy中的多維數(shù)組稱為ndarray,是Numpy中最常見的數(shù)組對象 ndarra...
    惑也閱讀 375評論 0 5
  • 核心數(shù)據(jù)結(jié)構(gòu) ndarray 多維數(shù)組, 注意 n維的順序 ndarray的屬性 ndarray.ndim數(shù)組的...
    咚咚強閱讀 528評論 0 0
  • 1.0 php 服務(wù)器腳本語言,適合開發(fā)web,實現(xiàn)功能,開源免費,可執(zhí)行在各種平臺支持所有的數(shù)據(jù)庫 2.0 ph...
    微笑你的天下閱讀 1,694評論 0 0

友情鏈接更多精彩內(nèi)容