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.exp、np.cos、np.div 等,几乎都可以零开销地工作。
然而,请记住
Polars 使用单独的位掩码来跟踪缺失值,而 NumPy 不会
接收此信息。这可能导致窗口函数或 np.convolve 给出错误或
不完整的结果,因此如果您将包含缺失数据的系列传递给
通用 ufunc,将会引发错误。使用函数 to_numpy 将 Polars 系列转换为 NumPy 数组。在转换过程中,缺失
值将被 np.nan 替换。