numpy将多维数组降维成一维
一、总结
一句话总结:
可以用reshape方法,但是感觉flatten方法更好
pridict_y [[14.394563 ] [ 4.5585423] [10.817445 ] [12.291978 ] [26.076233 ] [20.033213 ] [11.320534 ] [14.528755 ] [11.454205 ] [ 9.153889 ] [12.769189 ] [ 5.7419834] [25.451023 ] [18.215645 ] [21.743513 ] [ 8.488817 ] [17.128687 ] [17.53172 ] [ 4.953989 ] [11.3504 ] [ 7.5612407] [ 4.2715034] [20.316795 ] [17.732632 ] [ 4.2850647] [ 6.971166 ] [11.657596 ] [24.968727 ] [13.93272 ]] pridict_y.reshape(29,) 和 pridict_y.flatten() 结果都是 array([14.394563 , 4.5585423, 10.817445 , 12.291978 , 26.076233 , 20.033213 , 11.320534 , 14.528755 , 11.454205 , 9.153889 , 12.769189 , 5.7419834, 25.451023 , 18.215645 , 21.743513 , 8.488817 , 17.128687 , 17.53172 , 4.953989 , 11.3504 , 7.5612407, 4.2715034, 20.316795 , 17.732632 , 4.2850647, 6.971166 , 11.657596 , 24.968727 , 13.93272 ], dtype=float32)
二、【python】numpy库ndarray多维数组的维度变换方法
转自或参考:【python】numpy库ndarray多维数组的维度变换方法:reshape、resize、swapaxes、flatten等详解与实例
https://blog.csdn.net/brucewong0516/article/details/79185282
numpy库对多维数组有非常灵巧的处理方式,主要的处理方法有:
- .reshape(shape) : 不改变数组元素,返回一个shape形状的数组,原数组不变
- .resize(shape) : 与.reshape()功能一致,但修改原数组
In [22]: a = np.arange(20)
#原数组不变
In [23]: a.reshape([4,5])
Out[23]:
array([[ 0, 1, 2, 3, 4], [ 5, 6, 7, 8, 9], [10, 11, 12, 13, 14], [15, 16, 17, 18, 19]])
In [24]: a
Out[24]:
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19])
#修改原数组
In [25]: a.resize([4,5])
In [26]: a
Out[26]:
array([[ 0, 1, 2, 3, 4], [ 5, 6, 7, 8, 9], [10, 11, 12, 13, 14], [15, 16, 17, 18, 19]])
- .swapaxes(ax1,ax2) : 将数组n个维度中两个维度进行调换,不改变原数组
In [27]: a.swapaxes(1,0)
Out[27]:
array([[ 0, 5, 10, 15], [ 1, 6, 11, 16], [ 2, 7, 12, 17], [ 3, 8, 13, 18], [ 4, 9, 14, 19]])
- .flatten() : 对数组进行降维,返回折叠后的一维数组,原数组不变
In [29]: a.flatten()
Out[29]:
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19])