我有一个包含五列的文本文件。第一列有年份(2011 年到 2040 年),第二列有 Tmax,第三列有 Tmin,第四列有 Precip,第五列有 Solar 30 年。我想编写一个 python 代码,将第一列(年份)洗牌 10 次,其余列中包含相应的原始值,即:我只想洗牌年份列 10 次,以便第 1 年将有相应的价值观。
问问题
1112 次
2 回答
1
将文本读取为行列表,每行是列的列表或元组。该csv
模块可能对此有用。
然后只是洗牌。该random
模块有一个名为shuffle
.
编辑:
假设输入格式为 CSV(逗号分隔值):
import csv
import random
input_path = r"path\to\input"
output_path = r"path\to\output"
with open(input_path, "rb") as file:
rows = list(csv.reader(file, delimiter=","))
random.shuffle(rows)
with open(output_path, "wb") as file:
csv.writer(file, delimiter=",").writerows(rows)
于 2012-08-27T23:39:00.840 回答
0
你熟悉 NumPy 吗?一旦将数据保存在 numpyndarray
中,就可以轻而易举地在保持列顺序的同时打乱行,而无需创建许多临时对象。
您可以使用诸如np.genfromtxt
读取数据文件并创建ndarray
具有不同命名字段的功能。然后,您可以使用该np.random.shuffle
函数重新组织行。
于 2012-08-28T00:04:29.740 回答