【问题标题】:Can a python dataset span multiple linespython数据集可以跨越多行吗
【发布时间】:2019-08-06 23:43:54
【问题描述】:

我有一个大型数据集(18,000 个点),我需要每 10 个数据点采集一次。

我尝试通过删除换行符和插入逗号将其手动减少到 1 行,但这花费的时间太长

dataSet={23.1440352679
23.1207721286
23.1207721286
23.1207721286
23.1207721286
23.1207721286
23.1207721286
23.1207721286
23.1207721286
23.1207721286
23.0975076366
23.1207721286
23.0975076366
23.1207721286}

这是数据集中的前 14 项

我希望保存和打印每 10 个数据点,但由于换行符,我无法让它工作。

【问题讨论】:

  • 您的数据集是如何存储的?它是否在文本文件中,每个数字用换行符分隔?
  • 您只需要编写 python 代码来读取您的数据 - 不要试图通过对文件进行一些调整来使您的数据有效的 Python 代码。在没有任何编辑的情况下发布几行文件的内容,以及您对这些数据的实际需求(每隔 10 个数字打印听起来不是超级有用),然后人们将能够帮助您.

标签: python data-analysis


【解决方案1】:

是的,一个 Python 容器可以跨越多行,只要有分隔符(即逗号)。例如,这是表达列表的一种完全有效的方式:

mylist = [
    0,
    1,
    2,
    3
]

字典也可以多行表示,例如

mydict = {
    "zero": 0,
    "one": 1,
    "two": 2,
    "three": 3
}

但是,您当然不应该手动转换由换行符分隔的数据点文件! Python可以处理这项工作。如果内存是一个问题,我们可以逐行读取,并且只将相关数据点附加到列表中。我们在这里用来删除换行符的str 方法是rstrip(),为了更好地衡量,我们应该将结果字符串转换为整数,因为我假设这就是您使用数据点的方式。在本例中,我使用“test.txt”作为数据点文件的名称。

data = []
with open('test.txt', 'r') as f:
    for i, line in enumerate(f):
        if i % 10 == 9:
            data.append(int(line.rstrip()))

如果内存不是问题,我们有一个不同的可能更快(虽然我没有计时)的方法:

with open('test.txt', 'r') as f:
    lines = f.readlines()

data = [int(lines[i].rstrip()) for i in range(9, len(lines), 10)]

如果“每10个点”的意思是走0、10、20等而不是9、19、29等,那么我们只需将9改为0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-14
    • 2022-10-22
    • 1970-01-01
    • 1970-01-01
    • 2023-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多