3.6 合并、分割

学习目标

  • 目标
    • 应用concatenate、vstack、hstack实现数组合并
    • 应用split实现数组的横、纵向分割
  • 应用

合并、分割的用处

实现数据的切分和合并,将数据进行切分合并处理

3.6.1 合并

  • numpy.concatenate((a1, a2, ...), axis=0)
  • numpy.hstack(tup) Stack arrays in sequence horizontally (column wise).
  • numpy.vstack(tup) Stack arrays in sequence vertically (row wise).

示例:

>>> a = np.array([[1, 2], [3, 4]])
>>> b = np.array([[5, 6]])
>>> np.concatenate((a, b), axis=0)
array([[1, 2],
       [3, 4],
       [5, 6]])
>>> np.concatenate((a, b.T), axis=1)
array([[1, 2, 5],
       [3, 4, 6]])
>>> a = np.array((1,2,3))
>>> b = np.array((2,3,4))
>>> np.hstack((a, b))
array([1, 2, 3, 2, 3, 4])
>>> a = np.array([[1],[2],[3]])
>>> b = np.array([[2],[3],[4]])
>>> np.hstack((a, b))
array([[1, 2],
       [2, 3],
       [3, 4]])
>>> a = np.array([1, 2, 3])
>>> b = np.array([2, 3, 4])
>>> np.vstack((a, b))
array([[1, 2, 3],
       [2, 3, 4]])

>>> a = np.array([[1], [2], [3]])
>>> b = np.array([[2], [3], [4]])
>>> np.vstack((a, b))
array([[1],
       [2],
       [3],
       [2],
       [3],
       [4]])

比如我们将两部分股票的数据拼接在一起:

a = stock_change[:2, 0:4]
b = stock_change[4:6, 0:4]
# axis=1时候,按照数组的列方向拼接在一起
# axis=0时候,按照数组的行方向拼接在一起
np.concatenate([a, b], axis=0)
# np.hstack([a, b])
np.vstack([a, b])

3.6.2 分割

  • numpy.split(ary, indices_or_sections, axis=0) Split an array into multiple sub-arrays.
>>> x = np.arange(9.0)
>>> np.split(x, 3)
[array([ 0.,  1.,  2.]), array([ 3.,  4.,  5.]), array([ 6.,  7.,  8.])]
>>> x = np.arange(8.0)
>>> np.split(x, [3, 5, 6, 10])
[array([ 0.,  1.,  2.]),
 array([ 3.,  4.]),
 array([ 5.]),
 array([ 6.,  7.]),
 array([], dtype=float64)]
# 将ab分割成3个样本
np.split(ab, 3)

返回结果:

[array([[ 1.10449299, -0.87901717,  1.66943952, -0.28083391]]),
 array([[ 1.7428746 ,  0.69109283, -1.7336799 ,  0.31330138]]),
 array([[-0.34175246,  0.05445987,  0.54143572, -1.50094197]])]