Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python数据帧的乘法_Python_Pandas_Dataframe_Matrix Multiplication - Fatal编程技术网

使用Python数据帧的乘法

使用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。现在

这可能是一个愚蠢的问题,但我正在尝试将两个数据帧相乘,一个是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。现在,我对这个θ数据帧进行转置,它变成:

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