擅长:python、mysql、java
<p>根据@QuangHoang的答案,您可以看到numpy<code>.dot</code>矩阵乘法版本是否有更高的性能。由于<code>.to_numpy()</code>只是创建了一个与<code>K</code>和<code>D</code>索引无关的数字矩阵,因此除了纯数字之外,还必须进行一些操作,以使其恢复到所需的格式:</p>
<pre><code>a1 = df[['D1','D2','D3']].T.to_numpy()
a2 = df[['K1','K2']].to_numpy()
df1 = pd.DataFrame(a1.dot(a2)).unstack().reset_index() #see other options below
df1['level_0'] = 'K' + (df1['level_0'] + 1).astype(str)
df1['level_1'] = 'D' + (df1['level_1'] + 1).astype(str)
df1
Out[1]:
level_0 level_1 0
0 K1 D1 10
1 K1 D2 2
2 K1 D3 7
3 K2 D1 22
4 K2 D2 6
5 K2 D3 13
</code></pre>
<p>其他<code>numpy</code>数组选项:</p>
<pre><code>df1 = pd.DataFrame(a1 @ a2).unstack().reset_index()
df1 = pd.DataFrame(np.matmul(a1, a2)).unstack().reset_index()
</code></pre>
<p>更多信息(<a href="https://stackoverflow.com/questions/21562986/numpy-matrix-vector-multiplication">numpy matrix vector multiplication</a>)</p>