NumPy 数组切片

要访问或修改ndarray数组中的元素,可以使用数组切片/索引。

如前所述,ndarray数组索引从0开始。

使用切片访问数组,首先通过内置slice函数创建一个切片对象,该对象存储了创建时传入的startstopstep参数,把这个切片对象传给数组,我们就可以提取数组的一部分(切片)返回。

一维数组

示例

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

输出

[2  4  6]

上面的例子中,首先使用arange()函数创建ndarray数组,然后定义一个切片对象,它的startstopstep值分别是2、7和2。当把这个切片对象传递给ndarray数组时,会从数组中提取一部分返回,返回部分的索引从2到7,步长2。

可以直接向ndarray数组传入start:stop:step格式的切片参数,效果相同。

示例

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

输出

[2  4  6]
  • [i] 如果只放一个参数,则返回与索引对应的单个项。
  • [:i] 如果在前面插入:,则从该索引之前的所有项都将被提取。
  • [start:stop] 如果使用了两个参数,中间用:分隔,则使用默认步骤1,提取两个索引(不包括stop)之间的项。

示例

单项切片

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

输出

5

示例

从索引之后切片

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

输出

[2  3  4  5  6  7  8  9]

示例

从索引之前切片

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

输出

[0 1]

示例

在索引之间切片

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

输出

[2  3  4] 

上述规则也适用于多维数组。

多维数组

示例

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

# 切片从索引开始
print('a[1:]切片 ') 
print(a[1:])

输出

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

a[1:]切片
[[3 4 5]
 [4 5 6]]

切片还可以包括省略号(…),表示在该维度上选择全部。

示例

# 演示数组
import numpy as np 
a = np.array([[1,2,3],[3,4,5],[4,5,6]]) 

print ('数组:') 
print (a) 
print ('\n')  

# 返回一个数组,由第二列中的项目组成
print ('第二列中的项目是:')  
print (a[...,1]) 
print ('\n')  

# 返回第二行
print ('第二行中的项目是:') 
print (a[1,...]) 
print ('\n')  

# 返回第一列之后的项目
print ('第一列之后的项目:') 
print (a[...,1:])

输出

数组:
[[1 2 3]
 [3 4 5]
 [4 5 6]] 

第二列中的项目是:
[2 4 5] 

第二行中的项目是:
[3 4 5]

第一列之后的项目:
[[2 3]
 [4 5]
 [5 6]] 


浙ICP备17015664号 浙公网安备 33011002012336号 联系我们 网站地图  
@2019 qikegu.com 版权所有,禁止转载