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

如何在Polars中使用pl.lit()广播NumPy数组至DataFrame的每一行

如何在Polars中使用pl.lit()广播NumPy数组至DataFrame的每一行

嘿,我来帮你搞定这个问题——把NumPy数组广播到Polars DataFrame的每一行,用pl.lit()就能高效解决,先理清楚你的需求和已做的尝试:

需求

你有这么一个NumPy数组:

true_direction = np.array([1,2,3]).reshape(1,3)

想要把它插入到Polars DataFrame中,让这个数组在DataFrame的每一行都重复出现。

已尝试的方法

你目前试过手动重复数组后,用.with_columns()添加列:

.with_columns(
    pl.Series(
      np.repeat(true_direction, repeats=912, axis=0)
    ).alias('true_direction')
)

更简洁的解法:用pl.lit()自动广播

其实完全不用手动计算重复次数(比如你写的912),Polars的pl.lit()结合自动广播特性就能一步到位。

直接用下面的代码就行:

# 假设你的DataFrame变量名为df
df = df.with_columns(
    pl.lit(true_direction).alias("true_direction")
)

原理很简单:pl.lit()会把你的NumPy数组包装成一个字面量表达式,Polars在执行时会自动识别DataFrame的行数,把这个单行数组广播到所有行,省去了手动重复数组的麻烦,代码更简洁还不容易因为行数计算错误出问题。

哪怕你的数组是(3,)的一维形状,而不是(1,3)的二维形状,这个方法也同样适用,Polars会自动处理形状匹配的问题。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 12:17:59