为了账号安全,请及时绑定邮箱和手机立即绑定

如何从测试文件的列中获取元素

如何从测试文件的列中获取元素

四季花海 2021-11-16 09:37:49
如果我有一个类似以下形式的文本文件:第 1 栏 第 2 栏 第 3 栏熊 5 10龟 7 5蛇 9 7大猩猩 10 8目标是根据函数指定的参数值计算第 2 列或第 3 列的标准偏差。我知道如何计算标准偏差,所以问题是如何指定要使用的列以及如何使用/读取文本文件中的这些值作为 STD 公式的输入(如果它们是列形式)?到目前为止我的代码:with open('file.txt','r') as f:   for line in f:      line = line.strip().split(" ")      print (line) 所做的就是将每个条目拆分为一个列表。但我不知道如何索引每个列表的第二个元素并将它们加在一起。它不会让我
查看完整描述

2 回答

?
忽然笑

TA贡献1806条经验 获得超5个赞

from statistics import stdev



def sd(d, column):

    """Calculates SD. Given column can be 0 or 1"""

    return stdev([d[k][column] for k in d.keys()])



d = {}

with open("test.txt") as f:

    for line in f:

        line = line.strip().split()

        if line:

            d[line[0]] = (int(line[1]), int(line[2]))


calculated_sd = sd(d, 0)

这应该有效。函数的参数列可以是 0 或 1。

我所做的是读取文件并将信息存储到字典中,其中每个动物是一个键,列是与动物键相关联的元组。

顺便说一句,您应该先尝试对您的方法进行编码,然后如果它不起作用,请在此处询问,而不是直接询问代码。


查看完整回答
反对 回复 2021-11-16
?
万千封印

TA贡献1891条经验 获得超3个赞

如果您知道如何计算标准偏差,我想您所需要的只是提取值。稍微编辑一下您的代码:


def getcolumn(filename, idx):

    cval = []

    with open(filename,'r') as f:

        for line in f:

            cval.append(line.strip().split()[idx])

    return cval

这是您可以在代码中实现的功能。filename是一个带有文件名的字符串,idx您要提取的列的索引(记住索引从 0 开始)。

line.strip().split()是在列表中转换的行,因此插入要获取元素的列的索引并将其附加到cval.


调用函数:


values = getcolumn('file.txt', 1)

values是一个包含文本文件第 1 列值的列表。您可以使用它来计算标准偏差。


查看完整回答
反对 回复 2021-11-16
  • 2 回答
  • 0 关注
  • 166 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信