版权声明: 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.]])
花式索引跟切片不一样,它总是将数据复制到新数组中