numpy索引和切片

版权声明: https://blog.csdn.net/zheng_weibin/article/details/79358986

1、基本的索引和切片

基本索引与切片与python列表操作类似

arr = [1,2,3,4,5]
arr[2:4]  #[3,4]

当把标量值赋予给一个切片时(如arr[2:4]=12),该值会广播到整个选区。注意数组切片是原始数组的视图。这意味着数据不会被复制,视图上的任何修改都会直接反映到源数据上。

多维数据索引中,索引位置上的元素不是标量,而是一维数组了

arr2=np.array([[1,2,3],[4,5,6],[7,8,9]])
arr2[2] #array(7,8,9)

多维数组的递归访问

arr2[0][2]  #3
arr2[0,2]   #3在pandas中不提倡递归访问,这样速度回慢

切片索引

arr2[:2,1:] #array([[2,3],[5,6])

2、布尔索引

即根据布尔型数组进行数组索引,布尔型数组的长度必须与被索引的轴的长度一致

arr3 = np.array([1,2,3,4,5])
char= np.array(['A','B','A','C','D'])
char == 'A'
#array([True,False,True,False,False])
arr3[char == 'A']
#array([1,3])

3、花式索引

是指利用整数数组进行索引,为了以特定的顺序选取行子集,只需传入一个用于指定顺序的整数列表或ndarray即可:

arr = np.empty((8,4))
for i in range(8):
    arr[i]=i
arr
Out[23]: 
array([[ 0.,  0.,  0.,  0.],
       [ 1.,  1.,  1.,  1.],
       [ 2.,  2.,  2.,  2.],
       ..., 
       [ 5.,  5.,  5.,  5.],
       [ 6.,  6.,  6.,  6.],
       [ 7.,  7.,  7.,  7.]])
arr[[4,3,0,6]]
Out[24]: 
array([[ 4.,  4.,  4.,  4.],
       [ 3.,  3.,  3.,  3.],
       [ 0.,  0.,  0.,  0.],
       [ 6.,  6.,  6.,  6.]])

花式索引跟切片不一样,它总是将数据复制到新数组中


猜你喜欢

转载自blog.csdn.net/zheng_weibin/article/details/79358986