跳到内容

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.expnp.cosnp.div 等逐元素函数,几乎都可以零开销运行。

但是,请注意 Polars 使用单独的位掩码来跟踪缺失值,而 NumPy 不接收此信息。这可能导致窗口函数或 np.convolve 给出有缺陷或不完整的结果,因此如果您将包含缺失数据的 Series 传递给广义 ufunc,将会引发错误。使用 to_numpy 函数将 Polars Series 转换为 NumPy 数组。在转换过程中,缺失值将被 np.nan 替换。