我试图将所有使用MATLAB编写的代码转换为python。我有一个问题,我找不到解决问题的方法。也许有人有一个想法。如何读取文件,基于指定的列进行排序
我有一个文件,它有m行和两列。我想读取文件,然后根据第二列对文件进行排序。之后,我必须使用排序后的第一列(从第一行到第1000行)并查找大于阈值的值(此处为例如0.2)并将它们相加。
希望有人有一个想法。 由于
我试图将所有使用MATLAB编写的代码转换为python。我有一个问题,我找不到解决问题的方法。也许有人有一个想法。如何读取文件,基于指定的列进行排序
我有一个文件,它有m行和两列。我想读取文件,然后根据第二列对文件进行排序。之后,我必须使用排序后的第一列(从第一行到第1000行)并查找大于阈值的值(此处为例如0.2)并将它们相加。
希望有人有一个想法。 由于
如果该文件是例如用通过突出部和按列分离的问题的行分隔的字段非常简单:
f = open("filename.csv")
data = [map(float, x.split("\t")) for x in f.readlines()]
data.sort(key = lambda x:x[1])
result = sum(x[0] for x in data[:1000] if x[0] > 0.2)
考虑使用numpy的阵列和它的伴随功能。它们(通常)与MATLAB中的那些非常相似,这可能会使后者更容易转换。
import numpy as np
data = np.genfromtext("filename.csv", delimiter="\t", dtype=np.float)
idx = np.argsort(data[:, 1])
data1000 = data[idx[:1000]] # First 1000 of sorted data
result = np.sum(data1000[data1000[:, 0] > 0.2, 0])
你必须读取文件,并从文件数据创建'list'。在列表中,您可以执行像“排序”等操作。如果要写回排序数据,可以写入相同的文件。 – Nilesh
你能告诉我们你到目前为止所尝试过的吗? – michaeltang
如果你是从matlab到python世界,那么我建议你使用SciPy。 –