Numpy 函数
Polars 表达式支持 NumPy ufuncs(通用函数)。有关所有受支持的 NumPy 函数列表,请参阅 NumPy 文档。
这意味着如果 Polars 没有提供某个函数,我们可以使用 NumPy,并且通过 NumPy API 仍然能够进行快速的列式操作。
示例
DataFrame
· log
· 在功能 numpy 上可用
import polars as pl
import numpy as np
df = pl.DataFrame({"a": [1, 2, 3], "b": [4, 5, 6]})
out = df.select(np.log(pl.all()).name.suffix("_log"))
print(out)
shape: (3, 2)
┌──────────┬──────────┐
│ a_log ┆ b_log │
│ --- ┆ --- │
│ f64 ┆ f64 │
╞══════════╪══════════╡
│ 0.0 ┆ 1.386294 │
│ 0.693147 ┆ 1.609438 │
│ 1.098612 ┆ 1.791759 │
└──────────┴──────────┘
互操作性
Polars 的 Series 支持 NumPy 通用函数 (ufuncs) 和广义 ufuncs。诸如 np.exp
、np.cos
、np.div
等逐元素函数,几乎都可以零开销运行。
但是,请注意 Polars 使用单独的位掩码来跟踪缺失值,而 NumPy 不接收此信息。这可能导致窗口函数或 np.convolve
给出有缺陷或不完整的结果,因此如果您将包含缺失数据的 Series 传递给广义 ufunc,将会引发错误。使用 to_numpy
函数将 Polars Series 转换为 NumPy 数组。在转换过程中,缺失值将被 np.nan
替换。