You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Pandas实现Series列向量x1与x2^T的外积生成DataFrame?

如何用Pandas实现列向量x1与行向量x2^T的外积(生成DataFrame)

嘿,这个需求我之前处理过好多次,用Pandas实现起来特别顺畅,有两种高效的方式,我给你唠唠最优的实现步骤:

首先先明确我们的基础数据,假设我们有两个对应线性代数列向量的Pandas Series:

import pandas as pd
x1 = pd.Series([1, 2, 3], name='x1')
x2 = pd.Series([4, 5, 6], name='x2')

方法一:Pandas原生矩阵乘法(最直观易读)

直接利用Pandas的广播机制和矩阵乘法运算符@,把两个Series转成合适的二维结构后相乘:

# 把x1转成列格式DataFrame,x2转成行格式DataFrame,再执行矩阵乘法
outer_matrix = x1.to_frame() @ x2.to_frame().T

这个操作完全贴合线性代数里x1 * x2^T的逻辑:x1.to_frame()是3行1列的列向量,x2.to_frame().T是1行3列的行向量,相乘后直接得到3x3的DataFrame,还自动保留了原Series的索引和列名,代码可读性拉满,日常场景下首推这个方法。

方法二:借助Numpy外积函数(性能极致优化)

如果你的数据量特别大,追求极致运算性能,可以用Numpy的np.outer()计算外积,再包装成DataFrame:

import numpy as np
outer_matrix = pd.DataFrame(np.outer(x1, x2), index=x1.index, columns=x2.index)

Numpy的底层是C级别的运算,处理超大规模数据时会比纯Pandas操作快一丢丢,结果和上面的方法完全一致,只是需要手动指定索引和列名。

小提示

两种方法生成的DataFrame,行索引对应原x1的索引,列名对应原x2的索引,完美匹配线性代数中外积的结果格式,你可以根据自己的代码风格和数据规模选择合适的方式~

内容的提问来源于stack exchange,提问作者user40780

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 07:51:44