将多个CSV读入不同的数组

时间:2018-03-20 21:50:12

标签: python arrays list loops numpy

更新。这是我的代码。我将400个csv文件导入1个列表。每个csv文件都是200行和5列。我的最终目标是对每行或每个csv文件的第4列的值求和。以下代码导入所有csv文件。但是,我正在努力从大型列表中隔离每个csv文件的第4列数据。

for i in range (1, 5, 1):

data = list()
for i in range(1,400,1):
    datafile = 'particle_path_%d' % i
    data.append(np.genfromtxt(datafile, delimiter = "", skip_header=2))
print datafile

我想在python中将100个csv文件读入100个不同的数组。例如:

array1将拥有csv1 array2将有csv2等等。

这样做最好的方法是什么?我现在正在附加一个列表,但我有一个很大的列表,很难分成较小的列表。我的最终目标是能够对每个阵列执行不同的操作(添加,减去数字等)

2 个答案:

答案 0 :(得分:0)

您能提供更多有关需要做什么的详细信息吗?如果您只是尝试在csv文件中逐行读取并将其作为数组,那么这应该可行:

我会为此创建一个二维数组,如:

csv_array_container = []
for csv_file in csv_files:
    csv_lines = csv_file.readlines()
    csv_array_container.append(csv_lines)
#Now close your file handlers 

假设csv_files是csv文件的open file_handlers列表。更合适的东西可能会打开循环中的文件并在使用后关闭它们而不是打开100,收集数据,并由于文件处理程序的限制而关闭100.

如果您想了解更多详细信息,请向我们提供有关您正在尝试使用示例的更多信息。希望这会有所帮助。

答案 1 :(得分:0)

所以你有一个包含100个数组的列表。你能告诉我们他们的形状是什么?

如果它们都具有相同的形状,您可以使用

arr = np.stack(data)

我希望arr.shape为(100,200,5)

fthcol = arr[:,:,3]   # 4th column

如果它们都不相同,那么简单的列表理解就可以了

fthcol = [a[:,3] for a in data]

同样,根据你可以np.stack(fthcol)的形状(选择你的轴)。

不要害怕迭代data列表的元素。有100件物品,成本不会令人望而却步。