numpy 数组中一维怎么转二维和多维?简述 numpy 中增加channel的方法。
在机器学习中,所有的数据都是向量和矩阵,而怎么根据我们所要解决的问题来调整模型以及数据的格式,也就是矩阵的维度和大小是一项重要的基本功,那么本文就具体介绍下numpy中数组的转换,也就是增加channel的方法。
一维转二维
例如我们有一个一维的numpy array,有如下方法可以转为二维
1 | a = np.arange(10) |
可以看到,a
确实被转为了二维,以下方法是一样的:
1 | import numpy as np |
转为多维
时间序列预测中,我们一般需要的是(sample,time_stamp,feature)的3 个channel的数据,即一个三维矩阵,包含若干个sample,每个sample包含若干个时间序列点,而每个时间序列点有包括若干个feature,哪怕我们只是做单变量的时间序列预测,输入RNN网络例如LSTM的时候,数据也必须是三维的格式,下面我们讲一讲这么做的方法。
例如我们有一个若干个时间点每个时间点有两个特征的数据,
1 | a = np.arange(24).reshape((-1,2)) |
我们将a转化为三个channel,即可以
1 | b = a[:,None,:] |
以上对应着pandas的Dataframe,及我们对Dataframe取values属性,会得到一个二维矩阵,做法就如同上面一样,但是如果是Series的话,取values属性得到的是一个一维的,这时候我们的做法则是,
1 |
|
减少维度
若要减少数据的维度,我们可以用的方法如下,
1 | d = np.arange(12)[:,None,None] |