我刚接触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)
之间的区别,但似乎如果你尝试加载y
,使得y.shape=(2194,1)
,那么sklearn.linear_model.LassoCV会出现错误。
那么我该如何改变我的y
向量才能让它的形状变成y.shape=(2194,)
呢?
y.A
语法(我相信这是y.__array__()
的别名)来获取底层数组,比使用np.asarray
更好。 - Jaimeshape
不同;维度数量 (ndim
) 也不同。进入 Python shell,导入 numpy,并玩转一个小数组。查看其 shape 和 ndim,对其进行转置、压缩、转换为矩阵并再次转换回来。添加维度。在 matlab 中,数组至少有 2 个维度。numpy 矩阵是基于旧版 matlab 数组建模的,这些数组不能拥有更多的维度。 - hpaulj视图
与副本
的概念将变得重要。某些操作仅提供视图,例如,reshape
和切片(a[:10]
是前十个项目的视图),而np.asarray
如果可能的话就不会复制数据。另一些操作则会进行复制,例如,np.array
和'fancy indexing'a[a>5]
都返回副本。 - askewchan