Numpy functioni

Polars表达式支持Numpy ufuncs, 可以参阅文档, 查看所有受支持的Numpy函数的列表

这意味着如果Polars没有提供, 我们可以使用Numpy来做一些快速操作

1import polars as pl
2import numpy as np
3
4df = pl.DataFrame({"a": [1, 2, 3], "b": [4, 5, 6]})
5
6out = df.select(np.log(pl.all()).name.suffix("_log"))
7print(out)
1shape: (3, 2)
2┌──────────┬──────────┐
3│ a_log    ┆ b_log    │
4│ ---      ┆ ---      │
5│ f64      ┆ f64      │
6╞══════════╪══════════╡
7│ 0.0      ┆ 1.386294 │
8│ 0.693147 ┆ 1.609438 │
9│ 1.098612 ┆ 1.791759 │
10└──────────┴──────────┘

互操作性

Polars的Series支持Numpy通用ufunc和广义ufunc, 比如np.exp,np.cos,np.div等元素级函数, 而且几乎都是零开销的

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