【问题标题】:Reading multiple CSVs into different arrays将多个 CSV 读入不同的数组
【发布时间】:2018-03-20 21:50:12
【问题描述】:

更新。这是我的代码。我将 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 等。

这样做的最佳方法是什么?我现在正在附加到一个列表,但我有一个大列表,事实证明很难拆分成更小的列表。我的最终目标是能够对每个数组执行不同的操作(加、减数字等)

【问题讨论】:

  • 您能否编辑与您当前相关的code 的问题?
  • 您可以使用loadtxtgenfromtxt 读取文件吗?您必须更具体地说明您需要处理数组列表。

标签: python arrays list loops numpy


【解决方案1】:

您能否详细说明需要做什么?如果您只是尝试在 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 文件的打开文件处理程序列表。由于文件处理程序的限制,更合适的方法可能是在循环中打开文件并在使用后关闭它们,而不是打开 100、收集数据并关闭 100。

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

【讨论】:

  • 您还可以使用 3D 数组,容器包含 2D 数组的列表,其中它们是必不可少的 csv 以类似矩阵的格式加载。这将允许您索引下面的标题和数据。但是,根据您要完成的工作,可能会有更合适的解决方案,请查看 python 的 csv 库 :)
  • numpy,查看标签,有 csv 加载器。
【解决方案2】:

所以你有一个包含 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 件商品的成本不会太高。

【讨论】:

  • 嗨 hpaulj,堆栈运行良好。我所有的数组都是相同的形状。为了完成它,我想对第 n 行的堆叠数组进行切片。例如,array1 将有 0-10 行,array2 将有 11-21 行等。我看到有一个切片函数,但我不确定如何使用递增值迭代数组名称(array1,array2等)每次
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-04
  • 2017-02-11
  • 1970-01-01
  • 2023-03-23
  • 2011-09-21
相关资源
最近更新 更多