这可能是一个愚蠢的问题,但我正在尝试乘2个数据帧,一个是100x2形状(100行2列),另一个是2x1形状。第一个数据帧是(仅打印头部,有100行2列,即X0和X1):-

    X0     X1
0   1      6.1101
1   1      5.5277
2   1      8.5186
3   1      7.0032
4   1      5.8598

另一个数据帧是一个参数向量,我称之为θ,有两列0和1。
Theta=pd.DataFrame(np.zeros((1, 2)))
print("printing initialized Theta:\n",Theta)

输出是=
  0         1
0  0.0      0.0

如你所见,它的尺寸是1x2。现在,我对这个θ数据帧进行转置,它变成:
theta1=theta.transpose()
print("printing theta transponse:\n",theta1)

结果是:-
   0
0  0.0
1  0.0

但是,当我将第一个数据帧X乘以θ1时,使用:
predict=X.mul(theta1,axis=1)

我得到的输出是(仅打印头):
   X0          X1   0
0  0.0         0.0  0.0
1  0.0         0.0  0.0
2  0.0         0.0  0.0
3  0.0         0.0  0.0
4  0.0         0.0  0.0
(100, 3)

正如你所看到的,当我期望它是100x1时,它现在已经变成了100x3数据帧。
看起来数据帧毕竟不能基于矩阵乘法进行乘法运算。我该怎么做才对?。我应该将其转换为numpy.matrix然后进行矩阵乘法吗?.

最佳答案

两个失败点。
您想使用dot而不是mul
Theta的索引与X不对齐。所以您需要将Theta的列名与X的列名对齐。
试试这个吧

Theta.columns = X.columns
X.dot(Theta.T)

     0
0  0.0
1  0.0
2  0.0
3  0.0
4  0.0

关于python - 使用Python Pandas数据框进行乘法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42182663/

10-12 13:53
查看更多