import numpy as np
级联
concatenate 方法
需要将多个数组拼接成一个数组成为一个元组以参数的形式传入
concatenate可以指定数组的拼接方向,默认是0轴也就是垂直方向拼接,可以通过修改axis参数,让数组水平方向拼接
concatenate 对拼接的数组的形状有一定的要求----如果是水平方向拼接 需要行数相等--如果是垂直方向拼接 则需要列数相等
a = np.random.randint(2, 10, size=(2,4))
b = np.random.randint(2, 100, size=(2,4))
print(a, b, sep='\n')
#[[4 5 4 2]
# [2 8 5 8]]
#[[60 50 74 69]
# [34 11 38 87]]
np.concatenate((a, b))
#array([[ 4, 5, 4, 2],
# [ 2, 8, 5, 8],
# [60, 50, 74, 69],
# [34, 11, 38, 87]])
np.concatenate((a, b), axis=1)
#横向拼接 调参数axis=1(默认为0 纵向)
#array([[ 4, 5, 4, 2, 60, 50, 74, 69],
# [ 2, 8, 5, 8, 34, 11, 38, 87]])
stack 方法
会提升维度
也可以指定轴进行拼接
np.stack((a,b))
#升了一个维度 把要连接的数组重新放进一个新的大数组 所以会升维
#array([[[ 4, 5, 4, 2],
# [ 2, 8, 5, 8]],
#
# [[60, 50, 74, 69],
# [34, 11, 38, 87]]])
#也可以横向拼接 设置参数 axis=1(默认还是0)
np.stack((a,b), axis=1)
#array([[[ 4, 5, 4, 2],
# [60, 50, 74, 69]],
#
# [[ 2, 8, 5, 8],
# [34, 11, 38, 87]]])
hstack 方法
不会提升维度
是水平方向级联
等价于 np.concatenate((a,b), axis=1)
np.hstack((a,b))
#array([[ 4, 5, 4, 2, 60, 50, 74, 69],
# [ 2, 8, 5, 8, 34, 11, 38, 87]])
vstack 方法
不一定会提升维度-----如果数组是一维数组 会提升为二维数组
如果不提升维度等价于 np.concatenate((a,b)) 是垂直方向级联
np.vstack((a, b))
#array([[ 4, 5, 4, 2],
# [ 2, 8, 5, 8],
# [60, 50, 74, 69],
# [34, 11, 38, 87]])
分割
split 方法 可以传入一个数字,表示切割成多少份.还可以传入一个一维数组,
用来表示分割时的下标,得到的结果是一个列表,列表里每一个元素都是一个数组
hsplit 等价于split(axis=1) , vsplit等价于split(axis=0) 等价于split
a = np.random.randint(3, 40, size=(10,4))
#array([[20, 19, 5, 21],
# [21, 24, 35, 11],
# [ 4, 13, 28, 39],
# [22, 13, 30, 30],
# [ 7, 11, 21, 9],
# [27, 9, 30, 35],
# [24, 9, 11, 23],
# [36, 13, 36, 34],
# [31, 36, 34, 34],
# [14, 19, 7, 27]])
np.split(a,2) # 切割成两份
#[array([[20, 19, 5, 21],
# [21, 24, 35, 11],
# [ 4, 13, 28, 39],
# [22, 13, 30, 30],
# [ 7, 11, 21, 9]]),
# array([[27, 9, 30, 35],
# [24, 9, 11, 23],
# [36, 13, 36, 34],
# [31, 36, 34, 34],
# [14, 19, 7, 27]])]
np.split(a,[2,4]) #相当于按照 [0,2) [2,4) [4,) 左闭右开
#[array([[20, 19, 5, 21],
# [21, 24, 35, 11]]),
# array([[ 4, 13, 28, 39],
# [22, 13, 30, 30]]),
# array([[ 7, 11, 21, 9],
# [27, 9, 30, 35],
# [24, 9, 11, 23],
# [36, 13, 36, 34],
# [31, 36, 34, 34],
# [14, 19, 7, 27]])]