Numpy
Polars のエクスプレッションは NumPy ufuncs(ユニバーサルファンクション) をサポートしています。すべてのサポートされている NumPy 関数のリストについては、こちらを参照してください。
これは、Polars が提供していない関数がある場合、NumPy を使用できることを意味し、NumPy API を通じて高速な列操作が可能であることを意味します。
例
DataFrame
· log
· Available on feature 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)をサポートしています。np.exp()
、np.cos()
、np.div()
などの要素ごとの関数は、ほとんどオーバーヘッドなしで動作します。
ただし、Polars 固有の注記として:欠損値は別のビットマスクであり、NumPy には見えません。これにより、窓関数や np.convolve()
が不完全な結果や誤った結果をもたらすことがあります。
Polars Series
を NumPy 配列に変換するには、.to_numpy()
メソッドを使用します。変換中に欠損値は np.nan
に置き換えられます。