使用Python数据帧的乘法
这可能是一个愚蠢的问题,但我正在尝试将两个数据帧相乘,一个是100x2形状(100行2列),另一个是2x1形状。第一个数据帧为(仅打印磁头,有100行2列,即X0和X1):- 另一个数据帧是一个参数向量&我称它为θ,有两列0和1使用Python数据帧的乘法,python,pandas,dataframe,matrix-multiplication,Python,Pandas,Dataframe,Matrix Multiplication,这可能是一个愚蠢的问题,但我正在尝试将两个数据帧相乘,一个是100x2形状(100行2列),另一个是2x1形状。第一个数据帧为(仅打印磁头,有100行2列,即X0和X1):- 另一个数据帧是一个参数向量&我称它为θ,有两列0和1 Theta=pd.DataFrame(np.zeros((1, 2))) print("printing initialized Theta:\n",Theta) 输出是= 0 1 0 0.0 0.0 如您所见,它的大小为1x2。现在
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)
我得到的输出是(仅打印磁头):
正如您所看到的,当我期望它是100x1时,它现在已经变成了100x3数据帧。
看起来数据帧毕竟不能基于矩阵乘法进行乘法。我怎样才能把它做好?。我应该把它转换成numpy.matrix,然后进行矩阵乘法吗 两个故障点
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
.dor对齐您不需要的.values(事实上您很少需要它);这不是惯用的方法,你的最后一部分是惯用的方法(或者更好的是像那样构造θ);使用.values根本不是惯用用法,几乎不应该这样used@Jeff知道了。我会相应地调整答案。也许我看的地方不对,但我在这里找不到dataframe.dot()方法:-@sunny
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)
Theta.columns = X.columns
X.dot(Theta.T)
0
0 0.0
1 0.0
2 0.0
3 0.0
4 0.0