Ame*_*ina 8 python dataframe dot-product pandas
我无法dot() 在官方文档中找到该方法的条目.然而,方法就在那里,我可以使用它.为什么是这样?
在这个主题上,有没有办法计算数据框中每一行与另一个向量的元素乘法?(并获得一个dataframe背面?),即类似dot()但不是计算点积,人们计算元素产品.
Ada*_*hes 10
mul本质上是一种外在产品,而dot内在产品.让我扩展接受的答案:
In [13]: df = pd.DataFrame({'A': [1., 1., 1., 2., 2., 2.], 'B': np.arange(1., 7.)})
In [14]: v1 = np.array([2,2,2,3,3,3])
In [15]: v2 = np.array([2,3])
In [16]: df.shape
Out[16]: (6, 2)
In [17]: v1.shape
Out[17]: (6,)
In [18]: v2.shape
Out[18]: (2,)
In [24]: df.mul(v2)
Out[24]:
A B
0 2 3
1 2 6
2 2 9
3 4 12
4 4 15
5 4 18
In [26]: df.dot(v2)
Out[26]:
0 5
1 8
2 11
3 16
4 19
5 22
dtype: float64
Run Code Online (Sandbox Code Playgroud)
所以:
df.mul 采用形状矩阵(6,2)和向量(6,1)并返回矩阵形状(6,2)
而:
df.dot 采用形状矩阵(6,2)和向量(2,1)并返回(6,1).
这些是不同的操作,它们分别是外部和内部产品.
以下是如何将DataFrame乘以向量的示例:
In [60]: df = pd.DataFrame({'A': [1., 1., 1., 2., 2., 2.], 'B': np.arange(1., 7.)})
In [61]: vector = np.array([2,2,2,3,3,3])
In [62]: df.mul(vector, axis=0)
Out[62]:
A B
0 2 2
1 2 4
2 2 6
3 6 12
4 6 15
5 6 18
Run Code Online (Sandbox Code Playgroud)