我有一列包含不同长度的列表,如下所示,并希望在每个独立数组上创建一个并行的 np.diff。
import polars as pl
import numpy as np
np.random.seed(0)
ragged_arrays = [np.random.randint(10, size=np.random.choice(range(10))) for _ in range(5)]
df = pl.DataFrame({'values':ragged_arrays})
df
shape: (5, 1)
┌───────────────────┐
│ values │
│ --- │
│ object │
╞═══════════════════╡
│ [0 3 3 7 9] │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ [5 2 4] │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ [6 8 8 1 6 7 7] │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ [1 5 9 8 9 4 3 0] │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ [5 0 2] │
└───────────────────┘
我试图像这样简单地应用 np.diff :
df.select([
np.diff(pl.col("values"))
])
但它给了我这个错误:
ValueError: diff requires input that is at least one dimensional
看起来目前不支持这种类型的矢量化,但是有什么解决方法可以用极坐标实现同样的事情吗?我想避免在运行它之前按长度对数组进行分组。