矩阵的内积

时间:2016-05-20 22:14:03

标签: python numpy pandas

我有一个数据框。我想把每一列的内在产品与自己结合起来并总结一下。

到目前为止,我已经这样做了:

import pandas as pd
import numpy as np

np.random.seed([3, 1415])
df = pd.DataFrame(np.random.rand(10, 3).round(2), columns=['one', 'two', 'three'])

inner_df = df.T.dot(df)
print inner_df
print

tot = 0
for i in range(len(inner_df)):
    tot += inner_df.iloc[i, i]

print "total =", tot

          one     two   three
one    3.7611  3.4669  3.4766
two    3.4669  3.6323  3.1140
three  3.4766  3.1140  3.5214

total = 10.9148

这让我得到了我需要的东西,但感觉非常笨拙。什么是更清洁的方式?

1 个答案:

答案 0 :(得分:1)

矢量化解决方案看起来像这样。

import pandas as pd
import numpy as np

np.random.seed([3, 1415])
df = pd.DataFrame(np.random.rand(10, 3).round(2), columns=['one', 'two', 'three'])

# pandas approach
print df.mul(df).sum().sum()

# numpy approach
print np.square(df.values).sum()

10.9148
10.9148