我有一个数据框
df = pd.DataFrame(np.random.rand(10, 10))
我想用偶数列取奇数列的成对点积然后求它们。所以第0列为第1列,第2列为第3列,依此类推。
我已经完成了
df.mul(df.shift(axis=1)).sum().sum()
但这会让我得到第1栏和第2栏,第2栏和第3册,第3册和第4栏,这不是我想要的。
答案 0 :(得分:2)
元素乘法和总和减少可以被认为是点积减少。在这种情况下,我们可以使用NumPy's tensordot
来完成,就像这样 -
# Extract the elements as a NumPy array
arr = df.get_values()
# Perform dot product between odd and even columns to get the desired output
out = np.tensordot(arr[:,::2],arr[:,1::2])
答案 1 :(得分:1)
尝试:
(df.iloc[:, ::2].values * df.iloc[:, 1::2].values).sum()