为何将int类型列表的列表转为np.array()时返回结果不同?
numpy.array转换嵌套列表结果差异的核心原因
核心关键点是嵌套列表中所有子列表的长度是否完全一致:
当所有子列表长度相同时,numpy会将其转换为规整的二维
numpy.ndarray:import numpy as np list1 = [[1,2,3], [4,5,6], [7,8,9]] arr = np.array(list1) print(arr.shape) # 输出 (3, 3) print(arr.dtype) # 输出 int64 print(type(arr[0])) # 输出 <class 'numpy.ndarray'>当子列表长度不一致时,numpy无法构建规整的多维数组,会退化为存储Python列表的一维object类型数组:
import numpy as np list1 = [[1,2], [3,4,5], [6]] arr = np.array(list1) print(arr.shape) # 输出 (3,) print(arr.dtype) # 输出 object print(type(arr[0])) # 输出 <class 'list'>
简单来说,numpy对输入的嵌套结构有“规整性”要求,只有所有子元素的维度/长度统一时,才能生成对应维度的数组;否则会以object类型保存原始子列表,形成一维数组。
内容的提问来源于stack exchange,提问作者topcan5
相关产品推荐
相关产品推荐

