Python numpy和pandas矩阵维度

时间:2018-03-15 21:00:57

标签: python pandas numpy

我的变量看起来像这样:

data.head()

   Ones  Population   Profit
0     1      6.1101  17.5920
1     1      5.5277   9.1302
2     1      8.5186  13.6620
3     1      7.0032  11.8540
4     1      5.8598   6.8233

X     = data.iloc[:, 0:cols]
y     = data.iloc[:, cols]

X1 = np.matrix(X.values)
y1 = np.matrix(y.values)

X.shape
>>(97, 2)
y.shape
>>(97,)

X1.shape
>>(97, 2)
y1.shape
>>(1, 97)

data在pandas框架中。

我预计y1的尺寸将是97 X 1,但它是1 X 97.不知何故y1在中间被转置,我不明白为什么会发生这种情况。由于我的原始y熊猫阵列是97 X 1,我认为y1也应该是相同的,但显然不是它的工作原理

有任何解释吗?

2 个答案:

答案 0 :(得分:1)

[1, 2, 3, 4, 5] 将列转换为numpy数组,该数组具有1维,如

np.matrix

如果你在该数组上调用[[1, 2, 3, 4, 5]] ,它将返回

np.matrix

但是,如果在调用>>> a = np.array([1, 2, 3, 4, 5]) >>> a.shape (5,) >>> a array([1, 2, 3, 4, 5]) >>> np.matrix(a).shape (1, 5) >>> a.reshape(-1, 1) array([[1], [2], [3], [4], [5]]) >>> np.matrix(a.reshape(-1, 1)).shape (5, 1) >>> np.matrix(a.reshape(-1, 1)) matrix([[1], [2], [3], [4], [5]]) 之前先将1维数组转换为2维,则会得到(5,1)矩阵,

Transaction Date

答案 1 :(得分:1)

未经请求的建议,我们不建议使用矩阵。它为你买的最大的东西是运算符*用于矩阵乘法,但是使用python的3.5 matmul运算符@并不是必需的。

那就是说,这里要注意的关键是y的形状不是97 x 1,它是97,这是一维数组。 numpy matrix总是二维的,简单地按照惯例将1-d数组转换为1 x X矩阵。