1.np.concatenate 数组合并
2.np.vstack 垂直合并(合并在下方)
3.np.hstack 水平合并(合并在右侧)
4.np.split 数组分割
5.np.vsplit 分成上下两部分
6.np.hsplit 分成左右两部分
一:合并
1.启动jupyter,创建一个信息的notebook,导入numpy
import numpy as np
2.合并两个一维数组
#1.创建两个数组a和b
a = np.array([1,2,3])
b = np.array([4,5,6])
#2.将数组合并成c
c = np.concatenate([a,b])
c
#结果:array([1, 2, 3, 4, 5, 6])
运行效果图如下:
3.合并二维数组
#1定义一个二维数组A
A = np.arange(6).reshape(-1,3)
A
#结果:array([[0, 1, 2],
# [3, 4, 5]])
#2.定义一个二维数组B
B = np.arange(9).reshape(-1,3)
B
#结果:array([[0, 1, 2],
# [3, 4, 5],
# [6, 7, 8]])
#3.将二维数组A和B,合并成数组C
C = np.concatenate([A,B])
C
#结果:array([[0, 1, 2],
# [3, 4, 5],
# [0, 1, 2],
# [3, 4, 5],
# [6, 7, 8]])
运行效果图如下:
4.案例练习合并数组:
两个样本数据,身高,体重,年龄
X1 = np.array([22,168,62],[18,163,59]) X2=np.array([19,157,65],[20,175,72])
#1.定义两个样本数据
# age heigt weight
X1 = np.array([[22, 168, 62],
[18, 163, 59]])
X2 = np.array([[19, 157, 65],
[20, 175, 72]])
#2.输出第一个样本数据X1
X1
#结果:array([[ 22, 168, 62],
# [ 18, 163, 59]])
#3.输出第一个样本数据X2
X2
#结果:array([[ 19, 157, 65],
# [ 20, 175, 72]])
#4.这两组数据可能来自不同的渠道,所以要合并在一起
X = np.concatenate([X1,X2])
X
#结果:array([[ 22, 168, 62],
# [ 18, 163, 59],
# [ 19, 157, 65],
# [ 20, 175, 72]])
运行效果如下:
横向合并,第一组数据年龄和身高,第二组数据有体重,将两组数据合并在一起
#1.定义年龄和身高数据X1,体重数据X2
# age height
X1 = np.array([[22, 168],
[18, 163]])
# weight
X2 = np.array([[62],
[69]])
#2.将升高和体重横向合并在一起,行数需要统一
X = np.concatenate([X1,X2],axis=1)
X
#结果:array([[ 22, 168, 62],
# [ 18, 163, 69]])
5.一维数组和二维数据的合并
#1.定义一个一维数组a
a = np.array([88,99])
a
#结果:array([88, 99])
#2.定义一个二维数组A
A = np.arange(4).reshape(-1,2)
A
#结果:array([[0, 1],
# [2, 3]])
#3.直接合并两个数组,报错
np.concatenate([A,a])
#结果:ValueError: all the input arrays must have same number of dimensions, but the array # # at index 0 has 2 dimension(s) and the array at index 1 has 1 dimension(s)
运行结果如下:
5.1将一维数组转化为二维数组再合并
#将一维数组转化为二维数组,再合并
np.concatenate([A,a.reshape(1,-1)])
#结果:array([[ 0, 1],
# [ 2, 3],
# [88, 99]])
运行效果图如下:
5.2 直接在垂直方向进行堆叠:np.vstack([A,a])
运行效果图如下:
5.3在水平方向进行堆叠,np.hstack([A,a.reshape(-1,1)]),需将a转化为与A行数相等
运行效果图如下:
二: 分割
6.一维数组分割
#1.定义一维数组x
x = np.arange(10)
x
#结果:array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
#2.将x分割成两段
np.split(x,2)
#结果:[array([0, 1, 2, 3, 4]), array([5, 6, 7, 8, 9])]
#3.将x平均分割成5段
np.slpit(x,5)
#结果:[array([0, 1]), array([2, 3]), array([4, 5]), array([6, 7]), array([8, 9])]
#4.指定分割点进行分割
np.split(x,[3,7])
#结果:[array([0, 1, 2]), array([3, 4, 5, 6]), array([7, 8, 9])]
#5.指定分割点,并用参数接受分割后的值
x1,x2,x3 = np.split(x,[3,7])
x1
#结果:array([0, 1, 2])
x2
#结果:array([3, 4, 5, 6])
x3
#结果:array([7, 8, 9])
运行效果图如下:
7.二维数组分割
#1.定义一个二维数组
A = np.arange(16).reshape(4,-1)
A
#结果:array([[ 0, 1, 2, 3],
# [ 4, 5, 6, 7],
# [ 8, 9, 10, 11],
# [12, 13, 14, 15]])
#2.指定分割点分割,其中[3]分割点指0,1,2行,不包含3
A1,A2 = np.split(A,[3])
A1
#结果:array([[ 0, 1, 2, 3],
# [ 4, 5, 6, 7],
# [ 8, 9, 10, 11]])
A2
#结果:array([[12, 13, 14, 15]])
#3.垂直切割,其中[3]分割点指0,1,2列,不包含3
A1,A2 = np.split(A,[3],axis=1)
A1
#结果:array([[ 0, 1, 2],
# [ 4, 5, 6],
# [ 8, 9, 10],
# [12, 13, 14]])
A2
#结果:array([[ 3],
# [ 7],
# [11],
# [15]])
#4.分成上下两部分
np.vsplit(A,[3])
#结果:[array([[ 0, 1, 2, 3],
# [ 4, 5, 6, 7],
# [ 8, 9, 10, 11]]),
# array([[12, 13, 14, 15]])]
#5.分成左右两部分
np.hsplit(A,[3])
#结果:[array([[ 0, 1, 2],
# [ 4, 5, 6],
# [ 8, 9, 10],
# [12, 13, 14]]),
# array([[ 3],
# [ 7],
# [11],
# [15]])]
执行效果图如下:
8.应用,截取最后一列数据出来
#1.有一个组数据X1
# age heignt weight type
X1 = np.array([[22, 168, 62, 1],
[18, 163, 58, 1],
[19, 153, 59, 0]])
#2.将最后一列分割出来
X,y = np.hsplit(X1,[-1])
X
#结果:array([[ 22, 168, 62],
# [ 18, 163, 58],
# [ 19, 153, 59]])
y
#结果:array([[1],
# [1],
# [0]])
运行效果图如下: