Die Funktion selbst spielt keine Rolle, daher verwende ich Softmax als Ersatz. Wichtig dabei ist nur, dass es nicht über pl-Ausdrücke berechenbar ist.
Ich komme so weit:
Code: Select all
import polars as pl
import numpy as np
def softmax(t):
a = np.exp(np.array(t))
return tuple(t/np.sum(t))
ldf = pl.DataFrame({ 'id': [1,2,3], 'a': [0.2,0.1,0.3], 'b': [0.4,0.1,0.3], 'c': [0.4,0.8,0.4]}).lazy()
cols = ['a','b','c']
redict = { f'column_{i}':c for i,c in enumerate(cols) }
ldf.select(cols).map_batches(lambda bdf: bdf.map_rows(softmax).rename(redict)).collect()
Code: Select all
ldf.with_columns(pl.col(cols).map_batches(lambda bdf: bdf.map_rows(softmax).rename(redict))).collect()
Dies scheint kein ungewöhnlicher Anwendungsfall zu sein, daher frage ich mich, ob ich etwas übersehe.
Mobile version