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]])]