在将列表分配给numpy数组之前使用列表进行数据读取是否有效?

Usa*_*agi 2 python csv arrays performance numpy

我有一个大的CSV数据文件 - 大约1,444,000行数据 - 我正在读取并转换为numpy数组.我读了22列中的三列.这就是我目前正在做的事情:

import numpy as np
import csv

fid = open('data.csv', 'r')
csvfile = csv.reader(fid, dialect='excel', delimiter=',')
csvfile.next() # to skip header

t = []
u = []
w = []
for line in csvfile:
  t += [line[1]] # time
  u += [line[-4]] # velocity x
  w += [line[-2]] # velocity z
t = np.array(t, dtype='float')  
u = np.array(u, dtype='float')
w = np.array(w, dtype='float')
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:这有效吗?我本来打算将新数据附加到循环中的现有numpy数组,直到我读到整个数组必须每次都在内存中移动.

Ger*_*itS 5

我会建议numpy.loadtxt().我没有将它用于csv,但你可以将分隔符设置为','并只检索你需要的列作为numpy ndarray.

我怀疑以下内容会起作用:

# To load only columns 1 (time), 19 (velocity x), and 21 (velocity z).
numpy.loadtxt('data.csv', delimiter=',', usecols=(1,19,21))
Run Code Online (Sandbox Code Playgroud)