python函数之hstack函数--用于将两数组或矩阵合并

写在前面:
hstack()函数是用于两数组的水平方向合并,合并后行数不变;而vstack()函数,是用于两数组的垂直方向的合并,合并后列数不变,即horizontal和vertical

最近博主在项目中遇到了一个棘手的问题,就是在利用sklearn中的MLP模型的MLPRegressor时

model = MLPRegressor(random_state=30,learning_rate_init=0.001,max_iter=2000)  # 神经网络回归模型
modelfit = model.fit(trainX,trainY)`  # 训练模型

model.fit(trainX,trainY)中传入的trainX要求是一个n行两列的数组,但是项目源文件的格式是如下所示:

X1	X2	Y
1	0	14
2	36	12.69267
3	72	14.84871
4	108	15.57425
5	144	14.20613
6	180	12.83801
7	216	12.939175
8	252	13.99345
9	288	14.66057
10	324	14.8066475
11	360	14.769968
12	396	14.64191
13	432	14.91671
14	468	15.92667429
15	504	15.683245
16	540	15.865715
17	576	15.972055
18	612	16.121768
19	648	17.963816
20	684	18.5594075
21	720	17.679506
22	756	16.742342
23	792	16.113535
24	828	15.793085
25	864	14.889538
26	900	13.402894
27	936	12.3704575
28	972	11.4288625
29	1008	11.7414425
30	1044	11.541173
31	1080	10.577219
32	1116	9.7564725
33	1152	9.692945
34	1188	10.357995
35	1224	10.60211
36	1260	10.42529
37	1296	9.8458
38	1332	9.114232
39	1368	8.024944
40	1404	7.0691425
41	1440	6.426746667
42	1476	6.344356667
43	1512	4.729607273
44	1548	3.942810909
45	1584	3.156014545
46	1620	2.369218182
47	1656	1.55165375
48	1692	1.197923333
49	1728	3.27996
50	1764	5.17578
51	1800	7.0716
52	1836	9.99492
53	1872	13.94574
54	1908	13.399995

其中,trainX即为X1和X2的组合,在这里就遇到麻烦了,在网上找了很多方法,最后终于找到了一种可行的方法:

path = input('请输入沉降数据地址:') # E:\\百度网盘下载内容\\nonlinear theory\\MLP.xlsx
exceldata0= pd.read_excel(path,sheet_name='Sheet1',usecols='A:C')
X1 = np.array(exceldata0['X1'])
X2 = np.array(exceldata0['X2'])#将原始数据转换为数组

如上代码所示,要先将原始数据转换为数组,再进行接下来的操作

trainX1 = X1[:27,np.newaxis]
trainX2 = X2[:27,np.newaxis] #取前27行数据,并转换成27行一列数据,便于矩阵合并
trainX = np.hstack((trainX1,trainX2))

如上代码所示,正常若要取X1的前27行数据的话,就是使用X1[:27]即可,但是若要完成后面的拼接就要将其转换为二维的数组(现在是一维的),可看下面例子:

X1 = np.array(exceldata0['X1'])
X2 = np.array(exceldata0['X2'])
# Y = np.array(exceldata0['Y'])
trainX1 = X1[:27]
trainX2 = X2[:27,np.newaxis] #转换成27行一列数据,便于矩阵合并
print(np.shape(trainX1))
print(np.shape(trainX2))

输出结果:
(27,)
(27, 1)

由上可以看到,加了np.newaxis的trainX2已经是二维的了。【(27,)表示一维,(27, 1)表示二维】

最后再调用np.hstack()函数就可以合并啦:

trainX1 = X1[:27,np.newaxis]
trainX2 = X2[:27,np.newaxis] #转换成27行一列数据,便于矩阵合并
trainX = np.hstack((trainX1,trainX2))
print(trainX)

输出结果:
[[  1   0]
 [  2  36]
 [  3  72]
 [  4 108]
 [  5 144]
 [  6 180]
 [  7 216]
 [  8 252]
 [  9 288]
 [ 10 324]
 [ 11 360]
 [ 12 396]
 [ 13 432]
 [ 14 468]
 [ 15 504]
 [ 16 540]
 [ 17 576]
 [ 18 612]
 [ 19 648]
 [ 20 684]
 [ 21 720]
 [ 22 756]
 [ 23 792]
 [ 24 828]
 [ 25 864]
 [ 26 900]
 [ 27 936]]

综上就实现了两个数组的合并啦!原创不易,码字辛苦,多谢小伙伴们的观看和支持!让我们共同进步,一起成长!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十八与她

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值