numpy数组切片索引的详细讲解

来源:互联网 发布:海知智能孙胜男 编辑:程序博客网 时间:2024/06/01 07:39

知识点:Python中数组的索引是从0号位索引的,简单的矩阵知识

1.一维数组的索引

  1. arr = np.arange(10)  
  2. arr  
输出:
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

输入:arr[5
输出:5
记住0号位置索引
arr[5:8
输出:

array([5, 6, 7])
2.二维数组的索引
  1. arr2d = np.array([[1,2,3],[4,5,6],[7,8,9]])
  2. arr2d[2
输出:

array([7, 8, 9])
二维数组索引中有且仅有一个[]号时,只表示行索引,牢记这一点。

输入:arr2d[0][2] 或者arr2d[0,2
输出:3
此时索引为[][]或[,]的形式,这时表示第几行的第几列,两种索引方式等价
特殊:1.索引位置包括开头但不包括结尾。   2.   单独表示所有,:前后有数字表示索引到第几行或者第几列,视情况而定
  1. arr2d
输出:
array([[1, 2, 3],       [4, 5, 6],       [7, 8, 9]])
  1. arr2d[:2]  
输出:
array([[1, 2, 3],       [4, 5, 6]])
解释:首先,索引是单括号[]的情况,因此是行索引,冒号在前,表示索引到第1个行号,行号为0和1号,输出行则为1和2两行。
  1. arr2d[:2,1:] 
输出:
array([[2, 3],       [5, 6]])
解释:首先是双括号索引形式[][],因此是行列索引,冒号在前,表示索引到行号0和1;冒号在后,表示从行号1开始索引,因此索引结果为前两行所有元素中,第二列开始的所有元素,因此输出结果如上所示,
  1. arr2d[1,:2]  
输出:
array([4, 5]
解释:索引形式为双括号[][]形式,表示索引第几行第几列,逗号前为1,表示索引行号为0的行,也就是第一行,冒号在前表示索引列号0和1,因此输出第二行中的前两列元素。
  1. arr2d[2,:1]  
输出:
array([7])
解释:索引形式为[][]的形式,表示索引第几行第几列,逗号前为2,表示索引行号为2的行,也就是第三行,冒号在前,表示索引到列号为0的列,也就是第一列,因此为第三行的第一个元素。
  1. arr2d[:,:1]  
输出:
array([[1],       [4],       [7]])
解释:索引形式为[][]形式,表示索引第几行第几列,逗号前为单独:,因此表示索引所有的行号,也就是1,2,3行,冒号在前,表示索引到行号0,也就是第一列元素,因此结果为第一列元素。
  1. arr2d[:2,1:] = 0  
  2. arr2d  
输出:

array([[1, 0, 0],       [4, 0, 0],       [7, 8, 9]])
解释:索引形式为[][]的形式,表示第几行第几列,行部分冒号在前表示索引到行号为0和1的行,也就是第1和2行,列部分冒号在后,表示从列号为1也就是第2列开始索引,选中元素为前两行中的后两列元素。
练习部分可以通过以下的图片自行完成。
参考博客:http://blog.csdn.net/liangzuojiayi/article/details/51534164