最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

NumPy索引介紹之數(shù)組的索引和切片用法

 更新時間:2026年05月20日 14:42:47   作者:峽谷的小魚  
NumPy的數(shù)組對象可以使用索引進行訪問,支持基本切片、高級索引和字段訪問,基本切片拓展到多維,但返回視圖而非副本,高級索引通過整數(shù)和布爾索引實現(xiàn),使用對象是布爾類型時也會進行高級索引,字段索引適用于結(jié)構(gòu)化數(shù)組

NumPy的數(shù)組對象ndarrays可以和Python標準序列數(shù)據(jù)類型一樣,使用 x[obj] 進行索引操作。其中,x是數(shù)組,obj是索引選擇。有三種可用的索引:基本切片、高級索引、字段訪問。

一、基本切片和索引

Python序列的切片操作是一維的,NumPy 將對數(shù)組的切片拓展到了N維。

基本切片語法 i:j:k:其中i是起始索引,j是停止索引,k是步長。

對于多維數(shù)組的索引 array[(x, y, z)]可以被簡寫成x[x, y, z],這也是NumPy的語法糖。

示例:

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

# 簡單索引
>>>x[3]
3

# 一維切片
>>>x = np.arange(10)
>>>x[1:7:2]
array([1, 3, 5])

# 多維切片
>>>y = np.arange(20).reshape(4,5)
>>>y
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14],
       [15, 16, 17, 18, 19]])

>>>y[1:4, 1:4]
array([[ 6,  7,  8],
       [11, 12, 13],
       [16, 17, 18]])

# i和j為負,則可看作為n+i和n+j,n為維度中元素數(shù)量。
# k為負,則步長向前。
>>>x[-2:10]
array([8, 9])

>>>x[-3:3:-1]
array([7, 6, 5, 4])

# 默認寫法 ":"
>>>x[4:]
array([4, 5, 6, 7, 8, 9])

# 如果索引元組的元素數(shù)小于維度,則假定任何其它維
>>> z = np.array([[[1],[2],[3]], [[4],[5],[6]]])
>>> z.shape
(2, 3, 1)
>>> z[1:2]
array([[[4],
        [5]
        [6]]])

# 索引中可以使用 "..." 代指其它維度的全部索引,一個索引中只能有一個省略號
>>>z[...,0]
array([[1, 2, 3],
        [4, 5, 6]])

# 使用newaxis 增加維度
>>>z[:,np.newaxis,:,:].shape
(2, 1, 3, 1)

注意

索引 ii:i+1的區(qū)別:

>>>z = np.array([[[1],[2],[3]], [[4],[5],[6]]])
>>>z[0, 0, 0], z[0:1, 0, 0]
(1, array([1]))
  • 可以使用切片來設(shè)置數(shù)組的值,但不能改變數(shù)組的形狀
  • 基本切片只返回數(shù)據(jù)的視圖,并不會返回數(shù)據(jù)的拷貝

二、高級索引

高級索引有兩種類型:整數(shù)蘇松陰和布爾索引。與基本切片不同,高級索引返回數(shù)組的副本。

2.1 整數(shù)數(shù)組索引

# 整數(shù)數(shù)組分別表示所需索引的下標。
# 取點[0,0], [1,1], [2,0]
>>>x = np.array([[1,  2],  [3,  4],  [5,  6]]) 
>>>x[[0,1,2],  [0,1,0]]  
array([1, 4, 5])

# 獲取了 4X3 數(shù)組中的四個角的元素。 
# 行索引是 [0,0] 和 [3,3],而列索引是 [0,2] 和 [0,2]。

>>> x = array([[ 0,  1,  2],
               [ 3,  4,  5],
               [ 6,  7,  8],
               [ 9, 10, 11]])
>>> rows = np.array([[0, 0],
...                  [3, 3]], dtype=np.intp)
>>> columns = np.array([[0, 2],
...                     [0, 2]], dtype=np.intp)
>>> x[rows, columns]
array([[ 0,  2],
       [ 9, 11]])
# 使用np.ix_(rows, columns)獲得相同效果
>>>x[[0,3], [0,2]

注意:

如果高級索引和基本切片的結(jié)果數(shù)組相同,優(yōu)先使用切片。但是如果需要副本有不同的存儲位置,則使用高級索引。

2.2 布爾索引

當索引對象是布爾類型時, 也會發(fā)生高級索引。

# 對于array[obj]
# 如果array.ndim == obj.ndim,
# 將返回一個一維數(shù)組,其中包含所有obj中為 True 的位置的元素,以row-major為順序。
>>>x = np.array([[1., 2.], [np.nan, 3.], [np.nan, np.nan]])
>>>np.isnan(x),x[~np.isnan(x)]
(array([[False, False],
        [ True, False],
        [ True,  True]]),
 array([1., 2., 3.]))

# 使用ix_()功能
>>> x = array([[ 0,  1,  2],
               [ 3,  4,  5],
               [ 6,  7,  8],
               [ 9, 10, 11]])
>>> rows = (x.sum(-1) % 2) == 0
>>> rows
array([False,  True, False,  True])
>>> columns = [0, 2]
>>> x[np.ix_(rows, columns)]
array([[ 3,  5],
       [ 9, 11]])

2.3 字段索引

如果數(shù)組對象是結(jié)構(gòu)化數(shù)組,則可以使用字符串索引來訪問數(shù)組的字段。使用方式和字典類似。

>>> x = np.zeros((2,2), dtype=[('a', np.int32), ('b', np.float64, (3,3))])
>>>x
array([[(0, [[0., 0., 0.], [0., 0., 0.], [0., 0., 0.]]),
        (0, [[0., 0., 0.], [0., 0., 0.], [0., 0., 0.]])],
       [(0, [[0., 0., 0.], [0., 0., 0.], [0., 0., 0.]]),
        (0, [[0., 0., 0.], [0., 0., 0.], [0., 0., 0.]])]],
      dtype=[('a', '<i4'), ('b', '<f8', (3, 3))])

>>>x['a']
array([[0, 0],
        [0, 0]])
>>>x['a'].dtype
dtype('int32')

>>>x['b']
array([[[[0., 0., 0.],
          [0., 0., 0.],
          [0., 0., 0.]],
 
         [[0., 0., 0.],
          [0., 0., 0.],
          [0., 0., 0.]]],
 
 
        [[[0., 0., 0.],
          [0., 0., 0.],
          [0., 0., 0.]],
 
         [[0., 0., 0.],
          [0., 0., 0.],
          [0., 0., 0.]]]])
>>>x['b'].dtype
dtype('float64')


總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python中的Decimal使用及說明

    Python中的Decimal使用及說明

    這篇文章主要介紹了Python中的Decimal使用及說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • 使用Python在Word中查找并高亮指定文本

    使用Python在Word中查找并高亮指定文本

    當你需要在長文檔或報告中快速找到特定的關(guān)鍵詞或短語,Word中提供的查找并高亮這一功能可以幫助你迅速定位這些內(nèi)容,本文將介紹如何使用Python在Word中查找并突出顯示指定的文本,需要的朋友可以參考下
    2024-03-03
  • Python實現(xiàn)讀取txt文件并轉(zhuǎn)換為excel的方法示例

    Python實現(xiàn)讀取txt文件并轉(zhuǎn)換為excel的方法示例

    這篇文章主要介紹了Python實現(xiàn)讀取txt文件并轉(zhuǎn)換為excel的方法,涉及Python針對txt文件的讀取及Excel格式文件生成相關(guān)操作技巧,需要的朋友可以參考下
    2018-05-05
  • Linux RedHat下安裝Python2.7開發(fā)環(huán)境

    Linux RedHat下安裝Python2.7開發(fā)環(huán)境

    這篇文章主要為大家詳細介紹了Linux RedHat下安裝Python2.7、pip、ipython環(huán)境、eclipse和PyDev環(huán)境,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • Pytorch中TensorDataset與DataLoader的使用方式

    Pytorch中TensorDataset與DataLoader的使用方式

    這篇文章主要介紹了Pytorch中TensorDataset與DataLoader的使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • 一文解密Python中的垃圾回收

    一文解密Python中的垃圾回收

    我們知道,python?是一種高級編程語言,它提供了自動內(nèi)存管理的功能,即垃圾回收機制,所以本文就來聊聊python的垃圾回收機制是如何實現(xiàn)的以及具體是使用,感興趣的可以了解下
    2023-09-09
  • 深入淺析Python傳值與傳址

    深入淺析Python傳值與傳址

    這篇文章主要介紹了Python傳值與傳址的相關(guān)知識,包括傳值與傳址的區(qū)別介紹,需要的朋友可以參考下
    2018-07-07
  • python四則運算表達式求值示例詳解

    python四則運算表達式求值示例詳解

    這篇文章主要為大家介紹了python四則運算表達式求值示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • 一文詳解Python數(shù)據(jù)類型:數(shù)字、布爾與None的語義

    一文詳解Python數(shù)據(jù)類型:數(shù)字、布爾與None的語義

    在 Python 中,一切皆對象,每個對象都屬于特定的數(shù)據(jù)類型,理解數(shù)據(jù)類型的特性和行為是編寫高質(zhì)量 Python 代碼的關(guān)鍵,本文將深入探討 Python 的核心數(shù)據(jù)類型:數(shù)字、布爾值和 None,揭示它們背后的設(shè)計哲學和使用技巧
    2025-11-11
  • python數(shù)據(jù)結(jié)構(gòu)的排序算法

    python數(shù)據(jù)結(jié)構(gòu)的排序算法

    下面是是對python數(shù)據(jù)結(jié)構(gòu)的排序算法的一些講解及示意圖,感興趣的小伙伴一起來學習吧
    2021-08-08

最新評論

延边| 星子县| 毕节市| 六枝特区| 揭西县| 井冈山市| 家居| 资溪县| 鄱阳县| 海林市| 遂川县| 资中县| 曲沃县| 四川省| 铜山县| 临邑县| 大丰市| 仪征市| 苗栗县| 平陆县| 叙永县| 五大连池市| 宝坻区| 家居| 博罗县| 铁力市| 翁源县| 永泰县| 平南县| 罗平县| 宝清县| 仁化县| 黎平县| 乐业县| 马鞍山市| 平原县| 长岛县| 乐东| 江源县| 民勤县| 安新县|