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

如何在Python中高效实例化并操作海量变量(Pandas场景)

高效处理990列预测数据的Python方案

懂了,手动处理990列简直要命,给你几个高效的Pythonic方案,彻底替代那些重复操作:

方法1:直接生成目标Numpy数组(最简洁高效)

如果你的最终目标只是得到那组numpy数组,完全可以跳过中间的变量和字典步骤,直接借助Pandas和Numpy的内置优化方法完成:

import pandas as pd
import numpy as np

# 读取数据
data = pd.read_csv('data.csv')

# 筛选所有以"prediction"开头的列(适配prediction0到prediction989的命名规则)
prediction_cols = data.filter(like='prediction')

# 直接转成numpy数组,shape为(行数, 990),和你原代码的最终结果结构一致
prediction_array = prediction_cols.to_numpy()

# 如果需要和原代码的数组维度完全匹配(比如(1, 行数, 990)),可扩展维度
predictionList = np.expand_dims(prediction_array, axis=0)

这种方式完全不需要循环,Pandas内部做了性能优化,数据量越大,比手动循环的优势越明显。

方法2:保留字典列表的中间步骤(若业务需要)

如果你确实需要保留self.history这种每行是字典的列表,也不用手动赋值变量,用Pandas的to_dict方法一键生成:

import pandas as pd
import numpy as np

data = pd.read_csv('data.csv')
prediction_cols = data.filter(like='prediction')

# 直接生成每行的字典列表,每个字典的key对应列名(prediction0到prediction989)
self.history = prediction_cols.to_dict('records')

# 转成numpy数组,用列表推导式替代原代码的map+lambda,更直观易懂
predictionList = np.array([[row[col] for col in prediction_cols.columns] for row in self.history])
# 按需扩展维度
predictionList = np.expand_dims(predictionList, axis=0)

关键细节说明

  • data.filter(like='prediction'):快速筛选所有列名包含prediction的列,不用手动写990个列名;如果列名是严格的prediction0到prediction989,也可以用data[[f'prediction{i}' for i in range(990)]]精准选取。
  • to_numpy():Pandas官方推荐的DataFrame转Numpy数组的方法,比手动转列表再拼接数组高效数倍。
  • to_dict('records'):一键将DataFrame的每一行转换为字典,key为列名、value为对应行的值,直接生成你需要的self.history列表。

不管是990列还是更多列,这些方法都能一行代码搞定重复操作~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 07:48:17