鍍金池/ 教程/ 數(shù)據(jù)分析&挖掘/ NumPy切片和索引
NumPy位操作
NumPy數(shù)學(xué)算數(shù)函數(shù)
NumPy高級索引
NumPy環(huán)境安裝配置
NumPy IO文件操作
NumPy字符串函數(shù)
NumPy切片和索引
NumPy統(tǒng)計函數(shù)
NumPy矩陣庫
NumPy數(shù)組創(chuàng)建例程
NumPy線性代數(shù)
NumPy Matplotlib庫
NumPy教程
NumPy排序、搜索和計數(shù)函數(shù)
NumPy字節(jié)交換
NumPy Ndarray對象
NumPy數(shù)組操作
NumPy使用 Matplotlib 繪制直方圖
NumPy數(shù)組屬性
NumPy廣播
NumPy來自現(xiàn)有數(shù)據(jù)的數(shù)組
NumPy副本和視圖
NumPy在數(shù)組上的迭代
NumPy來自數(shù)值范圍的數(shù)組
NumPy算數(shù)運算
NumPy數(shù)據(jù)類型

NumPy切片和索引

NumPy - 切片和索引

ndarray對象的內(nèi)容可以通過索引或切片來訪問和修改,就像 Python 的內(nèi)置容器對象一樣。

如前所述,ndarray對象中的元素遵循基于零的索引。 有三種可用的索引方法類型: 字段訪問,基本切片高級索引。

基本切片是 Python 中基本切片概念到 n 維的擴(kuò)展。 通過將startstopstep參數(shù)提供給內(nèi)置的slice函數(shù)來構(gòu)造一個 Python slice對象。 此slice對象被傳遞給數(shù)組來提取數(shù)組的一部分。

示例 1

import numpy as np
a = np.arange(10)
s = slice(2,7,2)  
print a[s]

輸出如下:

[2  4  6]

在上面的例子中,ndarray對象由arange()函數(shù)創(chuàng)建。 然后,分別用起始,終止和步長值272定義切片對象。 當(dāng)這個切片對象傳遞給ndarray時,會對它的一部分進(jìn)行切片,從索引27,步長為2

通過將由冒號分隔的切片參數(shù)(start:stop:step)直接提供給ndarray對象,也可以獲得相同的結(jié)果。

示例 2

import numpy as np
a = np.arange(10)
b = a[2:7:2]  
print b

輸出如下:

[2  4  6]

如果只輸入一個參數(shù),則將返回與索引對應(yīng)的單個項目。 如果使用a:,則從該索引向后的所有項目將被提取。 如果使用兩個參數(shù)(以:分隔),則對兩個索引(不包括停止索引)之間的元素以默認(rèn)步驟進(jìn)行切片。

示例 3

# 對單個元素進(jìn)行切片  
import numpy as np

a = np.arange(10)
b = a[5]  
print b

輸出如下:

5

示例 4

# 對始于索引的元素進(jìn)行切片  
import numpy as np
a = np.arange(10)  
print a[2:]

輸出如下:

[2  3  4  5  6  7  8  9]

示例 5

# 對索引之間的元素進(jìn)行切片  
import numpy as np
a = np.arange(10)  
print a[2:5]

輸出如下:

[2  3  4]

上面的描述也可用于多維ndarray

示例 6

import numpy as np
a = np.array([[1,2,3],[3,4,5],[4,5,6]])  
print a
# 對始于索引的元素進(jìn)行切片  
print  '現(xiàn)在我們從索引 a[1:] 開始對數(shù)組切片'  
print a[1:]

輸出如下:

[[1 2 3]
 [3 4 5]
 [4 5 6]]

現(xiàn)在我們從索引 a[1:] 開始對數(shù)組切片
[[3 4 5]
 [4 5 6]]

切片還可以包括省略號(...),來使選擇元組的長度與數(shù)組的維度相同。 如果在行位置使用省略號,它將返回包含行中元素的ndarray

示例 7

# 最開始的數(shù)組  
import numpy as np
a = np.array([[1,2,3],[3,4,5],[4,5,6]])  
print  '我們的數(shù)組是:'  
print a
print  '\n'  
# 這會返回第二列元素的數(shù)組:  
print  '第二列的元素是:'  
print a[...,1]  
print  '\n'  
# 現(xiàn)在我們從第二行切片所有元素:  
print  '第二行的元素是:'  
print a[1,...]  
print  '\n'  
# 現(xiàn)在我們從第二列向后切片所有元素:
print  '第二列及其剩余元素是:'  
print a[...,1:]

輸出如下:

我們的數(shù)組是:
[[1 2 3]
 [3 4 5]
 [4 5 6]]

第二列的元素是:
[2 4 5]

第二行的元素是:
[3 4 5]

第二列及其剩余元素是:
[[2 3]
 [4 5]
 [5 6]]