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]]
综上就实现了两个数组的合并啦!原创不易,码字辛苦,多谢小伙伴们的观看和支持!让我们共同进步,一起成长!
更多推荐
已为社区贡献7条内容
所有评论(0)