NumPy 索引和切片


可以通过索引或切片来访问和修改 ndarray 对象的内容,就像 Python 的内置容器对象一样。

如前所述,ndarray对象中的项目遵循零基索引。有三种类型的索引方法:字段访问基本分片高级索引

基本切片是Python的基本概念的延伸,即对n个维度进行切片。一个Python切片对象是通过给内置的slice函数提供startstopstep参数来构造的,这个切片对象被传递给数组以提取数组的一部分。

示例 1


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

其输出如下:

[2  4  6]

在上面的例子中,一个ndarray对象由arange()函数。然后分别用开始、停止和步长值 2、7 和 2 定义切片对象。当这个切片对象被传递给 ndarray 时,它的一部分从索引 2 开始到 7,步长为 2。

同样的结果也可以通过将以冒号分隔的切片参数 : (start:stop:step) 直接提供给ndarray对象。

示例 2


import numpy as np 
a = np.arange(10) 
b = a[2内置参数2] 
print b

在这里,我们将得到相同的输出:

[2  4  6]

如果只放一个参数,将返回与该索引相对应的单个项目。如果在它前面插入一个:,从该索引开始的所有项目将被提取。如果使用两个参数(中间有:),两个索引之间的项目(不包括停止索引)和默认步骤一将被切片。

示例 3


# slice single item 
import numpy as np 

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

其输出如下:

5

示例 4


# slice items starting from index 
import numpy as np 
a = np.arange(10) 
print a[2:]

现在,输出将是:

[2  3  4  5  6  7  8  9]

例 5


# slice items between indexes 
import numpy as np 
a = np.arange(10) 
print a[2:5]

在这里,输出将是:

[2  3  4]

以上描述适用于多维ndarraytoo.

例 6


import numpy as np 
a = np.array([[1,2,3],[3,4,5],[4,5,6]]) 
print a  

# slice items starting from index
print 'Now we will slice the array from the index a[1:]' 
print a[1:]

输出如下:

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

Now we will slice the array from the index a[1:]
[[3 4 5]
 [4 5 6]]

切片还可以包含省略号 (...) 以生成与数组维度相同长度的选择元组。如果在行位置使用省略号,它将返回一个包含行中项目的 ndarray。

例 7


# array to begin with 
import numpy as np 
a = np.array([[1,2,3],[3,4,5],[4,5,6]]) 

print 'Our array is:' 
print a 
print '\n'  

# this returns array of items in the second column 
print 'The items in the second column are:'  
print a[...,1] 
print '\n'  

# Now we will slice all items from the second row 
print 'The items in the second row are:' 
print a[1,...] 
print '\n'  

# Now we will slice all items from column 1 onwards 
print 'The items column 1 onwards are:' 
print a[...,1:]

这个程序的输出如下:

Our array is:
[[1 2 3]
 [3 4 5]
 [4 5 6]] 
 
The items in the second column are: 
[2 4 5] 

The items in the second row are:
[3 4 5]

The items column 1 onwards are:
[[2 3]
 [4 5]
 [5 6]]