如何将不规则计算输出列表整理为数据集或规整numpy数组
处理计算结果生成规整数据集与NumPy数组的方案
你的原始输出列表为「点集元组+对应计算值」交替排列,最后一个单独浮点数为全局汇总统计值,可按以下方法规整:
1. 生成行列对齐的结构化数据集
先拆分原始数据,按「点集对+计算值」的规则组装每行数据:
raw_list = [([-1.0, -1.0], [3.0, 2.0]), 2.5, ([-2.0, -1.9], [-4.0, 10.0]), 3.0, ([-3.0, -2.0],), -2.5, ([1.0, 1.5],), 1.25, ([2.7, 1.0],), 1.85, 13.813077881487198] # 拆分分组数据和全局统计值 group_data = raw_list[:-1] global_stat = raw_list[-1] # 组装规整数据集 dataset = [] for i in range(0, len(group_data), 2): point_tuple = group_data[i] calc_result = group_data[i+1] # 统一补全点集长度为2,缺省用空列表占位 points = list(point_tuple) + [[]]*(2 - len(point_tuple)) dataset.append([*points, calc_result])
组装后的数据集每行格式为[第一个点坐标, 第二个点坐标, 对应计算结果],如果需要表格形式可直接转Pandas DataFrame:
import pandas as pd df = pd.DataFrame(dataset, columns=["点1", "点2", "对应计算结果"]) # 全局统计值可存入属性单独管理 df.attrs["全局汇总统计值"] = global_stat
2. 转换为NumPy数组
根据后续使用场景选择两种转换方式:
对象类型数组(保留原始数据结构)
import numpy as np # 直接转换为对象类型数组,完整保留坐标列表结构 np_obj_arr = np.array(dataset, dtype=object)
扁平化数值数组(适配数值计算场景)
将坐标拆分为独立列,缺省值用nan填充,统一为纯数值数组:
flat_data = [] for row in dataset: p1 = row[0] if row[0] else [np.nan, np.nan] p2 = row[1] if row[1] else [np.nan, np.nan] flat_data.append([*p1, *p2, row[2]]) np_flat_arr = np.array(flat_data, dtype=np.float64)
转换后每行格式为[点1x坐标, 点1y坐标, 点2x坐标, 点2y坐标, 对应计算结果],可直接用于后续矩阵运算。
内容的提问来源于stack exchange,提问作者user4556432
相关产品推荐
相关产品推荐

