# 切片迭代

  • Numpy的切片操作默认会修改数组而非Python原生的复制。

  • 一维数组和Python原生列表一样进行索引切片和迭代。

  • 多维数组迭代需要指定每一个轴,轴之间以逗号分隔,省略或书写...时其他轴被认为是全选。

    b=np.array([[ 0,  1,  2,  3],
           [10, 11, 12, 13],
           [20, 21, 22, 23],
           [30, 31, 32, 33],
           [40, 41, 42, 43]])
    b[2,3]			# 第3行第4列的元素,注意索引从0开始计数
    b[0:5, 1]		# 第二列中的每一行,注意区间的左闭合右开的特性
    b[1:3, : ]		# 每一列的,第二行和第三行的元素
    b[-1]			#当给与的参数少于轴数时,其它的轴被认为是全选,比如这里获得最后一行,等同于b[-1,:]
    
    c = np.array( [[[  0,  1,  2],             
                     [ 10, 12, 13]],
                    [[100,101,102],
                     [110,112,113]]])
    c[1,...]		# 等同于c[1,:,:] or c[1]
    c[...,2]		# 等同于c[:,:,2]
    
  • 对多维数组的迭代实际上是对其的第一轴进行迭代。

  • 可以使用数组的flat属性对数组所有元素进行迭代。

    b=np.array([[ 0,  1,  2,  3],
           [10, 11, 12, 13],
           [20, 21, 22, 23],
           [30, 31, 32, 33],
           [40, 41, 42, 43]])
    for element in b.flat:
         print(element)
    
    0
    1
    2
    3
    ...