【问题标题】:How to make this process work faster?如何使这个过程更快地工作?
【发布时间】:2016-01-11 08:00:45
【问题描述】:

我正在尝试从一个大型 csv 文件(大约 250 000 行)中填充数组列表,但这需要很长时间。我确信有一种方法可以让这个过程更快,但我不知道如何!

代码如下:

import csv
import numpy as np

energy = []
ondeIG =[]
time =[]
envelope = []

with open('file.csv') as csvfile:
    reader = csv.DictReader(csvfile)
    for row in reader:        
        time = np.hstack([time, row['Time']])
        energy = np.hstack([energy, row['Energy']])
        ondeIG = np.hstack([ondeIG, row['OndeIG']])
        envelope = np.hstack([envelope, row['envelope']])

谢谢!

【问题讨论】:

  • 你能把你的csv前几行的样子贴出来吗,你可以用pandas更快地加载它

标签: python arrays csv numpy optimization


【解决方案1】:

np.hstack() 每次都会构造一个新的 ndarray,这很昂贵。您可以使用 append 就地更新列表:

with open('file.csv') as csvfile:
    reader = csv.DictReader(csvfile)
    for row in reader:        
        time.append(row['Time'])
        energy.append(row['Energy'])
        ondeIG.append(row['OndeIG'])
        envelope.append(row['envelope'])

【讨论】:

    【解决方案2】:

    要从 csv 文件导入数据,请查看 pandas,尤其是 pandas.read_csv()

    在这里您要花费大量时间,因为您在每次迭代时都重建了一个数组(甚至 4 个数组)。

    【讨论】:

      猜你喜欢
      • 2014-08-20
      • 1970-01-01
      • 1970-01-01
      • 2011-03-15
      • 1970-01-01
      • 1970-01-01
      • 2018-03-17
      • 1970-01-01
      • 2021-12-17
      相关资源
      最近更新 更多