NumPy 索引和切片

NumPy 索引和切片

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

如前所述,ndarray对象中的项遵循基于零的索引。有三种类型的索引方法可用 – 字段访问、基本切片高级索引

基本切片是Python基本切片概念在n维度中的扩展。Python切片对象可通过将 start、stopstep 参数传递给内置 slice 函数来构建。这个切片对象被传递给数组以提取数组的一部分。

示例1

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

它的输出如下:

[2  4  6]

在上面的例子中,通过 ndarray 函数准备了一个数组对象。然后定义了一个切片对象,分别使用起始值2、结束值7和步长2。当将这个切片对象传递给ndarray时,将切片从索引2开始到索引7,步长为2。

通过在 ndarray 对象直接使用冒号:(起始值:结束值:步长)也可以得到相同的结果。

示例2

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

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

[2  4  6]

如果只传入一个参数,将返回与索引对应的单个项。如果在其前面插入冒号(:),将提取从该索引开始的所有项。如果使用两个参数(之间用冒号分隔),将切片两个索引之间的项(不包括停止索引),默认步长为1。

示例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]

上述描述也适用于多维 ndarray

示例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]]

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程