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

Polars中是否存在等价于np.outer()的实现方法?

在Polars中实现类似numpy.outer()的外积方法

Polars本身没有直接提供和np.outer()完全同名的函数,但可以通过几种简洁直观的方式实现等价的外积效果:

方法一:利用广播机制(最接近numpy思路)

通过将两个一维Series重塑为二维结构(一个列向量、一个行向量),Polars会自动触发广播机制完成逐元素相乘,和np.outer()的实现逻辑一致:

import polars as pl

# 定义输入向量
vec1 = pl.Series([1, 2, 3])
vec2 = pl.Series([4, 5, 6])

# 计算外积
outer_product = vec1.reshape((-1, 1)) * vec2.reshape((1, -1))
print(outer_product)

输出结果会是一个3×3的矩阵,和np.outer(vec1.to_numpy(), vec2.to_numpy())的结果完全一致。

方法二:通过交叉连接+透视表

如果需要以DataFrame形式展示带行列标签的结果,可以用交叉连接生成所有元素对,计算乘积后再透视成矩阵:

df1 = pl.DataFrame({"x": vec1})
df2 = pl.DataFrame({"y": vec2})

outer_df = (
    df1.cross_join(df2)
    .with_columns(product=pl.col("x") * pl.col("y"))
    .pivot(index="x", columns="y", values="product")
)
print(outer_df)

这种方式会保留原始向量的元素作为行和列的标签,适合需要直观查看对应关系的场景。

验证结果一致性

可以和numpy的结果做对比确认:

import numpy as np

np_result = np.outer(vec1.to_numpy(), vec2.to_numpy())
print(np.array_equal(outer_product.to_numpy(), np_result))  # 输出 True

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 20:27:10