Pandas 对于具有相同尺寸的两个矩阵,矩阵点积失败

Pandas 对于具有相同尺寸的两个矩阵,矩阵点积失败,pandas,dot-product,Pandas,Dot Product,我刚刚犯了这个错误,我想不出原因是什么。你能帮我看看吗 这两个数据帧都是4乘4。我不明白他们为什么不能得到点积np.dot将在此处工作。多谢各位 df1 i1 i2 i3 i4 0 1 0.00000 0.000000 0.000000e+00 1 0 0.85935 0.080730 2.948807e-07 2 0 0.00000 0.832259 9.775291e-02 3 0 0.00000

我刚刚犯了这个错误,我想不出原因是什么。你能帮我看看吗

这两个数据帧都是4乘4。我不明白他们为什么不能得到点积
np.dot
将在此处工作。多谢各位

df1

   i1       i2        i3            i4
0   1  0.00000  0.000000  0.000000e+00
1   0  0.85935  0.080730  2.948807e-07
2   0  0.00000  0.832259  9.775291e-02
3   0  0.00000  0.002086  8.392081e-01

df2
   i1       i2        i3            i4
0   1  0.00000  0.000000  0.000000e+00
1   0  0.83891  0.090042  3.365395e-07
2   0  0.00000  0.809407  1.080944e-01
3   0  0.00000  0.001577  8.176372e-01

df1.dot(df2)

---------------------------------------------------------------------------
数值误差
在()
---->1 df1.点(df2)
点格式的packages\pandas\core\frame.pyc(self,other)
786如果(len(公共)>len(自列)或
787 len(普通)>len(其他索引)):
-->788提升值错误('矩阵未对齐')
789
790 left=self.reindex(列=common,副本=False)
ValueError:矩阵未对齐

您需要在此处添加
T
(熊猫的点基于索引和列)


你可以改成numpy

df1.values.dot(df2.values)

array([[1.        , 0.        , 0.        , 0.        ],
       [0.        , 0.72091731, 0.14272102, 0.00872699],
       [0.        , 0.        , 0.67379042, 0.16988895],
       [0.        , 0.        , 0.00301185, 0.68639325]])
或者可以切换轴标签

df1.dot(df2.set_index(df2.columns))

   i1        i2        i3        i4
0  1.0  0.000000  0.000000  0.000000
1  0.0  0.720917  0.142721  0.008727
2  0.0  0.000000  0.673790  0.169889
3  0.0  0.000000  0.003012  0.686393
df1.values.dot(df2.values)

array([[1.        , 0.        , 0.        , 0.        ],
       [0.        , 0.72091731, 0.14272102, 0.00872699],
       [0.        , 0.        , 0.67379042, 0.16988895],
       [0.        , 0.        , 0.00301185, 0.68639325]])
df1.dot(df2.set_index(df2.columns))

   i1        i2        i3        i4
0  1.0  0.000000  0.000000  0.000000
1  0.0  0.720917  0.142721  0.008727
2  0.0  0.000000  0.673790  0.169889
3  0.0  0.000000  0.003012  0.686393