NumPy(索引、array合并与分割)

一、Numpy索引

  1. 一维索引

    1
    2
    3
    4
    5
    import numpy as np
    A = np.arange(3,15)
    # array([3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14])

    print(A[3]) # 6

  2. 二维索引

    1
    2
    3
    4
    5
    6
    7
    8
    A = np.arange(3,15).reshape((3,4))
    """
    array([[ 3, 4, 5, 6]
    [ 7, 8, 9, 10]
    [11, 12, 13, 14]])
    """

    print(A[2]) # [11 12 13 14]

  • 二维索引取值

    1
    print(A[1][1])      # 8

  • 切片操作 注:1:3表示对第2到第4进行切片输出(不包含第4)

    1
    2
    print(A[1, 1])      # 8
    print(A[1, 1:3]) # [8 9]

二、array 合并

  1. np.vstack() 上下合并
  • vertical stack本身属于一种上下合并,即对括号中的两个整体进行对应操作。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    import numpy as np
    A = np.array([1,1,1])
    B = np.array([2,2,2])

    print(np.vstack((A,B))) # vertical stack
    """
    [[1,1,1]
    [2,2,2]]
    """

  • 利用shape函数可以让我们很容易地知道A和C的属性,从打印出的结果来看,A仅仅是一个拥有3项元素的数组(数列),而合并后得到的C是一个2行3列的矩阵。

    1
    2
    3
    C = np.vstack((A,B))      
    print(A.shape,C.shape)
    # (3,) (2,3)

  1. np.hstack() 左右合并
    1
    2
    3
    4
    5
    6
    7
    D = np.hstack((A,B))       # horizontal stack

    print(D)
    # [1,1,1,2,2,2]

    print(A.shape,D.shape)
    # (3,) (6,)
  • 通过打印出的结果可以看出:D本身来源于A,B两个数列的左右合并,而且新生成的D本身也是一个含有6项元素的序列。