gpt4 book ai didi

python - 如何使用 Python 中的数组输出中的数据创建表

转载 作者:太空宇宙 更新时间:2023-11-03 23:54:50 25 4
gpt4 key购买 nike

我打印出组合数组并保存到文本文件中,如下所示:

({
ngram_a67e6f3205f0-n: 1,
logreg_c120232d9faa-regParam: 0.01,
cntVec_9c0e7831261d-vocabSize: 10000
},0.8580469779197205)
({
ngram_a67e6f3205f0-n: 2,
logreg_c120232d9faa-regParam: 0.01,
cntVec_9c0e7831261d-vocabSize: 10000
},0.8880895806519427)
({
ngram_a67e6f3205f0-n: 3,
logreg_c120232d9faa-regParam: 0.01,
cntVec_9c0e7831261d-vocabSize: 10000
},0.8656452460818544)

我希望提取数据来生成python Dataframe,就像:

1, 10000, 0.8580469779197205
2, 10000, 0.8880895806519427

最佳答案

我的建议是尽可能更改文件的输入格式。这将大大简化你的生活。
如果这是不可能的,下面的代码可以解决你的问题:

import pandas as pd
import re

pattern_tuples = '(?<=\()[^\)]*'
pattern_numbers = '[ ,](?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?'
col_name = ['ngram', 'logreg', 'vocabSize', 'score']

with open('test.txt','r') as f:
matchs = re.findall(pattern_tuples, f.read())
arr_data = [[float(val.replace(',','')) for val in re.findall(pattern_numbers, match)] for match in matchs]
df = pd.DataFrame(arr_data, columns=col_name).astype({'ngram':'int', 'vocabSize': 'int'})

并给出:

   ngram  logreg  vocabSize     score
0 1 0.01 10000 0.858047
1 2 0.01 10000 0.888090
2 3 0.01 10000 0.865645

简要说明

  1. 阅读文件
  2. 使用 re.findall正则表达式 pattern_tuples 找到文件中的所有元组

  3. 对于每个元组,使用正则表达式 pattern_numbers 您将找到您感兴趣的 4 个数值。通过这种方式,您将获得包含您的数据的列表列表

  4. 在 pandas 数据框中输入结果


额外

以下是如何以 json 格式保存您的 CV 结果,以便您可以更轻松地管理它们:

  1. 创建一个cv_results数组来保存CV结果

  2. 对于 CV 的每个循环,您将获得一个包含结果的元组 t,您必须将其转换为字典并卡在数组 cv_results

  3. 在 CV 循环结束时,将结果保存为 json 格式

.

cv_results = []

for _ in range_cv: # Loop CV
# ... Calculate results of CV in t
t = ({'ngram_a67e6f3205f0-n': 1,
'logreg_c120232d9faa-regParam': 0.01,
'cntVec_9c0e7831261d-vocabSize': 10000},
0.8580469779197205) # FAKE DATA for this example

# append results like a dict
cv_results.append({'res':t[0], 'score':t[1]})

# Store results in json format
with open('cv_results.json', 'w') as outfile:
json.dump(cv_results, outfile, indent=4)

现在你可以读取 json 文件,你可以像普通的 python 字典一样访问所有字段:

with open('cv_results.json') as json_file:
data = json.load(json_file)

data[0]['score']
# output: 0.8580469779197205

关于python - 如何使用 Python 中的数组输出中的数据创建表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58228521/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com