Skip to content

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 的系列支持 NumPy 的通用函数(ufuncs)和广义通用函数。 元素级函数如 np.expnp.cosnp.div 等,几乎都可以零开销地工作。

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