python - 如何从 numpy 矩阵传递到 numpy 数组?

标签 python arrays numpy scikit-learn

我是 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/

相关文章:

python - 改变 pandas 数据框的结构

python - 对 groupby 对象应用函数以将行附加到每个组

python - 如何显示所有数据并将其保存在文本文件中?

c - 行/列排列

python - 使用 openCV 导出 openGL 纹理时出现异常

python - 通过配置文件设置 python 记录器配置

c - Int 到 char 数组。它是如何工作的?

python - 将函数应用于 numpy 数组并检查每个元素以便知道返回什么结果

python - 在 python 中模拟神经元脉冲序列

javascript - 如何在 JS 中将对象转换为数组列表