我无法在方法 dot()
上找到条目 in the official documentation .但是方法就在那里,我可以使用它。这是为什么?
关于这个主题,有没有一种方法可以计算数据框中每一行与另一个向量的逐元素乘法? (并获得 dataframe
返回?),即类似于 dot()
但不是计算点积,而是计算元素积。
最佳答案
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
所以:
df.mul
获取形状为 (6,2) 的矩阵和向量 (6, 1) 并返回矩阵形状 (6,2)
同时:
df.dot
采用形状为 (6,2) 和向量 (2,1) 的矩阵并返回 (6,1)。
这些不是同一个操作,它们分别是外积和内积。
关于python - 在 Pandas 中获取带有向量的数据帧的点积,并返回数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15753916/