我是 Python 和 Numpy 的新手,所以我的问题的标题可能是错误的。
我从 matlab 文件加载一些数据
data=scipy.io.loadmat("data.mat")
x=data['x']
y=data['y']
>>> x.shape
(2194, 12276)
>>> y.shape
(2194, 1)
y
是一个向量,我想要 y.shape = (2194,)
。
我不知道 (2194,)
和 (2194,1)
之间的区别,但如果您尝试加载 sklearn.linear_model.LassoCV 似乎会遇到错误 y
这样 y.shape=(2194,1)
。
那么如何更改我的 y
向量以获得 y.shape=(2194,)
??
最佳答案
首先转换为数组,然后挤压去除多余的维度:
y = y.A.squeeze()
步骤:
In [217]: y = np.matrix([1,2,3]).T
In [218]: y
Out[218]:
matrix([[1],
[2],
[3]])
In [219]: y.shape
Out[219]: (3, 1)
In [220]: y = y.A
In [221]: y
Out[221]:
array([[1],
[2],
[3]])
In [222]: y.shape
Out[222]: (3, 1)
In [223]: y.squeeze()
Out[223]: array([1, 2, 3])
In [224]: y = y.squeeze()
In [225]: y.shape
Out[225]: (3,)
关于python - 如何从 numpy 矩阵传递到 numpy 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19957516/