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