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

为何df.select获取的数组为2D类型?如何转为1D数组?

问题解答

为什么得到的是2D数组?

df.select(["A"])返回的是单列DataFrame,DataFrame本质是二维数据结构(行×列),即使只有一列,它的维度依然是(行数, 1)。当调用to_ndarray时,会保留这个二维结构,所以得到形状为(100,1)的2D数组。

转成1D数组的方法

有两种常用思路:

1. 直接从Series转换(推荐)

不用select获取DataFrame,而是用column方法获取对应列的Series(一维结构),再转成ndarray:

x = df.column("A").unwrap().to_ndarray::<Float64Type>().unwrap();

这样得到的直接就是形状为(100,)的1D数组,类型为ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>。

2. 对已有的2D数组做维度压缩

如果已经得到了2D数组,可以用ndarray的squeeze方法去掉长度为1的维度:

let x_1d = x.squeeze().unwrap();

或者用flatten方法展平数组(适合任意二维数组转一维):

let x_1d = x.flatten().to_owned();

也可以手动指定形状重塑:

let x_1d = x.into_shape(100).unwrap();

注意手动重塑时,指定的长度必须和原数组的元素总数一致(这里100=100×1),否则会报错。

内容的提问来源于stack exchange,提问作者Arli94

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 12:10:29