Numpy || 切片与索引提取元素

切片和索引

通过切片和索引的方式可以访问和修改ndarray对象的内容

ndarray数组可基于0-n的下标进行索引,如,np.array(range(10))的索引是0-9

一维数组的切片和索引:

a=np.array(range(10))
b=a[4]
c=a[4:]
d=a[:4]
e=a[4:9]
f=a[4:9:2]
g=a[-1]
h=a[::-1]
print('a ',a,'\nb ',b,'\nc ',c,'\nd ',d,'\ne ',e,'\nf ',f,'\ng ',g,'\nh ',h)
'''
输出:
a  [0 1 2 3 4 5 6 7 8 9] 
b  4 
c  [4 5 6 7 8 9]  有a[4]元素
d  [0 1 2 3] 	无a[4]元素
e  [4 5 6 7 8] 
f  [4 6 8]
g  9
h  [9 8 7 6 5 4 3 2 1 0]
'''

冒号分隔切片参数[start : stop : step]

[strat] 提取该索引对应的单个元素

[strat :] 提取该索引及以后的所有元素(包含strat项元素)

[: stop] 提取该索引之前的所有元素(不包含stop项元素)

[start : stop] 提取两个索引(不包含stop)之间的所有元素

[-1] 提取数组最后一个元素,同理[-2]表示倒数第二个元素,以此类推

[: : -1] 提取所有数据(从后向前提取)

二维数组的切片和索引:

a=np.array(range(25)).reshape(5,5)
#提取行元素
b=a[3]
c=a[3:]
#提取某个元素
d=a[3][3]
e=a[3,3]
#提取列元素, ... 表示全部索引
f=a[...,2]
g=a[...,2:]
print('a ',a,'\nb ',b,'\nc ',c,'\nd ',d,'\ne ',e,'\nf ',f,'\ng ',g)
'''
输出:
a  [[ 0  1  2  3  4]
 	[ 5  6  7  8  9]
 	[10 11 12 13 14]
 	[15 16 17 18 19]
 	[20 21 22 23 24]] 
b  [15 16 17 18 19] 
c  [[15 16 17 18 19]
 	[20 21 22 23 24]] 
d  18 
e  18 
f  [ 2  7 12 17 22] 
g  [[ 2  3  4]
 	[ 7  8  9]
 	[12 13 14]
 	[17 18 19]
 	[22 23 24]]
'''

提取行元素:

[x] 提取索引为x的一维数组

[x :] 提取该索引及以后的所有一维数组(包含第x行)

提取确定位置的元素:

[x] [y][x,y] 提取位置为x行y列的元素

提取列元素:

[… , y] 提取第y列

[… , y:] 提取第y列后的所有列(包含第y列)

**用整数索引提取多个指定位置元素:**输出一个数组

a=np.array(range(16)).reshape(4,4)
print("a ",a)
#[1,2,3]表示行索引,[0,1,2]表示列索引
b=a[[1,2,3],[0,1,2]]    #提取(1,0)\(2,1)\(3,2)三个元素,并构成一个array
print("b ",b)
#0:3表示行索引[0,1,2],2:4表示列索引[2,3]
c=a[0:3,2:4]
print("c ",c)
'''
输出:
a  [[ 0  1  2  3]
 	[ 4  5  6  7]
 	[ 8  9 10 11]
 	[12 13 14 15]]
b  [ 4  9 14]
c  [[ 2  3]
 	[ 6  7]
 	[10 11]]
'''

**用布尔索引提取满足特定条件元素:**输出一个数组

x=np.array(range(10))
#单条件索引
a=x[x<7]
b=x[x>=8]
#多条件索引,(使用&与|)
c=x[(x<2)|(x>8)]
d=x[(x>2)&(x<8)]
print('a ',a,'\nb ',b,'\nc ',c,'\nd ',d)
'''
输出:
a  [0 1 2 3 4 5 6] 
b  [8 9] 
c  [0 1 9] 
d  [3 4 5 6 7]
'''

你可能感兴趣的:(numpy,python,开发语言,数据分析)