如何将嵌套列表转换为元素为整数列表的2x2 Numpy矩阵
实现方案
你之前的操作没有达到预期,是因为默认情况下numpy会自动拆分嵌套的数值序列,生成高维数值矩阵,不会将内层列表保留为独立元素。只需要指定dtype=object即可实现需求:
代码示例
import numpy as np lst = [([0, 0, 1, 1], [0, 1, 0, 1], [0, 2, 1, 2], [1, 1, 0, 0]), ([0, 0, 1, 1], [0, 2, 1, 2], [0, 1, 0, 1], [1, 1, 0, 0])] # 转换单个集合 numpy_array = np.array(lst[0], dtype=object).reshape(2, 2) # 测试访问 print(numpy_array[0, 0][3]) # 输出结果为 1 # 批量转换整个列表所有集合 all_arrays = [np.array(item, dtype=object).reshape(2, 2) for item in lst]
原理解释
- 当指定
dtype=object时,numpy会将每个内层的4元素列表视为一个独立的对象存储,不会自动拆分展开 - 后续
reshape(2,2)只会修改外层数组的维度,不会影响内层列表的结构 - 如果需要对内部列表做数值运算,可提前将内层列表转为numpy数组,访问逻辑保持不变:
numpy_array = np.array([np.array(sub) for sub in lst[0]], dtype=object).reshape(2, 2)
内容的提问来源于stack exchange,提问作者Sharki
相关产品推荐
相关产品推荐

