numpy--1.6数组拼接和分裂

1.数组的拼接

拼接或连接NumPy中的两个数组主要由np.concatenate、np.vstack和np.hstack例程实现。np.concatenate将数组元组或数组列表作为第一个参数。

  x = np.array([1, 2, 3])

  y = np.array([3, 2, 1])

  np.concatenate([x, y])  # array([1, 2, 3, 3, 2, 1])

可以一次性拼接两个以上数组:

  z = [99, 99, 99]

  np.concatenate([x, y, z])

grid = np.array([[1, 2, 3], 

         [4, 5, 6]])

沿着第一个轴拼接:

  np.concatenate([grid, grid])

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

沿着第二个轴拼接

  np.concatenate([grid, grid], axis=1)

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

沿着固定维度处理数组时,使用np.vstack(垂直栈)和np.hstack(水平栈)函数会更简洁:

  x = np.array([1, 2, 3])

  grid = np.array([[9, 8, 7], 

          [6, 5, 4]])

垂直栈数组

  np.vstack([x, grid])

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

水平栈数组

  y = np.array([[99],

         [99]])

  np.hstack([grid, y])

  # array([[ 9, 8, 7, 99],
  #    [ 6, 5, 4, 99]])

与之类似,np.dstack将沿着第三个维度拼接数组。

2.数组的分裂

分裂可以通过np.split、np.hsplit和np.vsplit函数来实现。可以向以上函数传递一个索引列表作为参数,索引列表记录的是分裂点位置:

  x = [1, 2, 3, 99, 99, 3, 2, 1]

  x1, x2, x3 = np.split(x, [3, 5])  # x1 : array([1, 2, 3]); x2 : array([99, 99]);x3 : array([3, 2, 1])

值得注意的是,N分裂点会得到N+1个子数组。相关的np.hsplit和np.vsplit的用法也类似:

  grid = np.arange(16).reshape((4, 4))

  # array([[ 0, 1, 2, 3],
  #    [ 4, 5, 6, 7],
  #    [ 8, 9, 10, 11],
  #    [12, 13, 14, 15]])

  upper, lower = np.vsplit(grid, [2])

  # upper : array([[0, 1, 2, 3],
  #         [4, 5, 6, 7]])

  # lower : array([[ 8, 9, 10, 11],
  #         [12, 13, 14, 15]])

  left, right = np.hsplit(grid, [2])

  # left : array([[ 0, 1],
  #        [ 4, 5],
  #        [ 8, 9],
  #        [12, 13]])

  # right : array([[ 2, 3],
  #       [ 6, 7],
  #       [ 10, 11],
  #       [14, 15]])

同样,np.dsplit将数组沿着第三个维度分裂。

猜你喜欢

转载自www.cnblogs.com/husteryzc/p/12895884.html
今日推荐