2

我有一个包含五列的文本文件。第一列有年份(2011 年到 2040 年),第二列有 Tmax,第三列有 Tmin,第四列有 Precip,第五列有 Solar 30 年。我想编写一个 python 代码,将第一列(年份)洗牌 10 次,其余列中包含相应的原始值,即:我只想洗牌年份列 10 次,以便第 1 年将有相应的价值观。

4

2 回答 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 回答