我的变量看起来像这样:
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也应该是相同的,但显然不是它的工作原理
有任何解释吗?
答案 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
矩阵。