假设您有一个熊猫数据框,如下所示:
x = pd.DataFrame(data={
'x1': [np.array([1,1,1]), np.array([1,2,6])],
'x2': [np.array([2,3,2]), np.array([3,4,7])] })
我正在向此数据框添加新列,该列应包含x1
和x2
的点积,即我的输出表应如下所示:
x1 | x2 | result
[1,1,1] | [1,2,6] | 9 (dot product of [1,1,1] and [1,2,6])
[2,3,2] | [3,4,7] | 32 (dot product of [2,3,2] and [3,4,7])
我该怎么做?
我尝试过
x.x1.dot(x.x2)
无论如何,它返回一个数组[5,11,44]
,即看起来是在“错误”的方向上计算点积。
谢谢!
答案 0 :(得分:1)
我认为您可以在此处使用for循环
x['result']=[np.dot(x,y) for x, y in zip(x.x1,x.x2)]
答案 1 :(得分:1)
您需要访问要点的行:x.x1[0].dot(x.x1[1])= 9
访问x.x1时,您将获得两行的熊猫系列。
@ Wen-Ben响应显示了如何在一行中获取“结果”列。
答案 2 :(得分:0)
无需使用dot()即可完成同样的操作。
x['product'] =df.apply(lambda k: sum(k['x1']*(k['x2'])), axis = 1)
答案 3 :(得分:0)
这可以通过在数组上重载点运算符来实现,而“点”的意思是“。”。
因此正确的陈述变为
product = x.x1.x.x2;
(注意:请确保在编辑器中关闭了椭圆,以进行更复杂的计算。)