如何将形状为(x,y)的numpy数组转换为长度为x、元素为(y,)numpy数组的列表
NumPy 二维数组转指定结构列表实现方案
需求说明
将形状为(x,y)的二维NumPy数组转换为长度为x的Python列表,列表内每个元素均为形状为(y,)的一维NumPy数组。
举个示例:如果原数组形状为(100,10),转换后列表包含100个元素,每个元素都是形状为(10,)的NumPy数组。
实现方法
方法1:直接迭代转换(最简洁,推荐日常使用)
NumPy数组迭代时默认按第一维度拆分,直接用list()包裹原数组即可完成转换,代码如下:
import numpy as np # 生成示例二维数组,形状为(100, 10) original_arr = np.random.rand(100, 10) # 转换为目标列表 target_list = list(original_arr)
验证结果:
- 列表长度:
len(target_list)→ 输出100 - 单个元素形状:
target_list[0].shape→ 输出(10,)
方法2:显式垂直拆分
如果你需要更明确的拆分语义,可以用np.vsplit沿第一维度拆分数组,直接返回符合要求的列表:
target_list = np.vsplit(original_arr, original_arr.shape[0])
注意事项
不要使用original_arr.tolist()实现该需求,该方法会将所有NumPy数值转换为Python原生数值,返回的是嵌套的Python列表,不会保留NumPy数组结构。
内容的提问来源于stack exchange,提问作者Sid Anand
相关产品推荐
相关产品推荐

