Python 行的内积

Python 行的内积,python,pandas,Python,Pandas,我有 看起来像 df={'x1':[1,2,3,4], 'x2':[5,6,7,8], 'y1':[1,2,1,1], 'y2':[1,1,1,1], } df=pd.DataFrame(df) 如何在df x1*y1+x2*y2中获得一个新列作为“内积”? 第一次尝试是 x1 x2 y1 y2 1 5 1 1 2 6 2 1 3 7 1 1 4 8 1 1 但失败了 应该很简单,但不知何故找不到任何简单的答

我有

看起来像

df={'x1':[1,2,3,4],
    'x2':[5,6,7,8],
    'y1':[1,2,1,1],
    'y2':[1,1,1,1],
    }
df=pd.DataFrame(df)
如何在df x1*y1+x2*y2中获得一个新列作为“内积”? 第一次尝试是

  x1 x2 y1 y2
   1  5  1  1
   2  6  2  1
   3  7  1  1
   4  8  1  1
但失败了

应该很简单,但不知何故找不到任何简单的答案,不是吗

df['inner']=(df[['x1','x2']*df[['y1','y2']]).sum(axis=1)
难道不是这样吗:

df['inner']=(df[['x1','x2']*df[['y1','y2']]).sum(axis=1)

您可以使用@EdChum解决方案作为示例。更一般的:

In [5]:
df['inner']=(df['x1'] * df['y1']) + (df['x2']*df['y2'])
df

Out[5]:
   x1  x2  y1  y2  inner
0   1   5   1   1      6
1   2   6   2   1     10
2   3   7   1   1     10
3   4   8   1   1     12

您可以使用@EdChum解决方案作为示例。更一般的:

In [5]:
df['inner']=(df['x1'] * df['y1']) + (df['x2']*df['y2'])
df

Out[5]:
   x1  x2  y1  y2  inner
0   1   5   1   1      6
1   2   6   2   1     10
2   3   7   1   1     10
3   4   8   1   1     12

我有点困惑,你提到的“内积”(或点积)会产生2x2,但你想把它放到4x1列中吗?您可能希望澄清这一点和/或显示所需的结果。我怀疑这与内积无关,但你提到的内积令人困惑,因为它对如何乘以2个矩阵有一个非常具体的定义。我有点困惑,你提到的“内积”(或点积)会产生2x2,但你想把它放到4x1列中吗?您可能希望澄清这一点和/或显示所需的结果。我怀疑这与内积无关,但你提到内积是令人困惑的,因为它对如何乘以2个矩阵有一个非常具体的定义。