You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Polars中嵌套list类型序列转为numpy多维数组?

如何将Polars列表类型序列转换为多维NumPy数组?

Polars的Series.to_numpy()方法仅支持原生数值类型的序列,对于List类型的序列可通过以下两种方法转换为多维NumPy数组:

方法1:转Python列表后生成NumPy数组

这是通用度最高的方法,适用于任意维度的List序列,只要所有子元素的结构维度保持一致:

二维序列示例

import polars as pl
import numpy as np

s = pl.Series("a", [[1,1,1],[1,2,3],[1,0,1]])
result = np.array(s.to_list())
print(result)
# 输出:
# array([[1, 1, 1],
#        [1, 2, 3],
#        [1, 0, 1]])

三维序列示例

s = pl.Series("a", [[[1,1],[1,2]],[[1,1],[1,1]]])
result = np.array(s.to_list())
print(result)
# 输出:
# array([[[1, 1],
#         [1, 2]],
#
#        [[1, 1],
#         [1, 1]]])

方法2:使用Polars原生数组表达式arr.to_numpy()

通过Polars的arr.to_numpy()表达式可直接对List列做转换,适合嵌入DataFrame操作链中:

二维序列示例

import polars as pl
import numpy as np

s = pl.Series("a", [[1,1,1],[1,2,3],[1,0,1]])
result = s.to_frame().select(pl.col("a").arr.to_numpy()).to_numpy().squeeze()
print(result)
# 输出同上

三维序列示例

s = pl.Series("a", [[[1,1],[1,2]],[[1,1],[1,1]]])
result = s.to_frame().select(pl.col("a").arr.to_numpy()).to_numpy().squeeze()
print(result)
# 输出同上

说明:squeeze()用于去除转换后多余的维度,保证输出结构与预期一致。

内容的提问来源于stack exchange,提问作者J.N.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 09:45:29