从多个csv文件创建2D矩阵

时间:2018-09-11 08:18:15

标签: python arrays python-3.x csv numpy

我正在使用Python3,并且希望从多个CSV文件中加载数据。 每个CSV(一次测量)都有3列(3个不同的物理量)。我想将每个数量加载到3个单独的变量上。对于一个CSV文件,这非常简单,我使用了:

TIME,CH1,CH2 = loadtxt(file_path,usecols=(3,4,5),delimiter=',',skiprows=2,unpack=True)

,效果很好。现在,我想扩展此过程,以便可以加载多个CSV文件。每个数组为2D,每列代表一个CSV文件。我将拥有3个2D数组,而不是具有三个变量的CSV文件,这对于数据分析更加方便。

我认为我可以尝试这样的事情:

TIME = matrix(zeros((20480,len(file_path)))) # 20480 length of each column
CH1 = matrix(zeros((20480,len(file_path)))) # len(file_path) number of CSV files
CH2 = matrix(zeros((20480,len(file_path))))
for k in range(0,len(file_path)): # reading each CSV file
    TIME[:,k],CH1[:,k],CH2[:,k] = loadtxt(file_path[k],usecols=(3,4,5),delimiter=',',skiprows=2,unpack=True)

但它告诉我:

ValueError: could not broadcast input array from shape (20480) into shape (20480,1)

最后,我希望变量看起来像这样:

TIME = matrix([[0., 0., 0.],
               [0., 0., 0.],
               [0., 0., 0.],
               ...,
               [0., 0., 0.],
               [0., 0., 0.],
               [0., 0., 0.]])

每一列都来自一个不同的CSV文件。

我认为这是一个很常见的问题,但是我并没有真正了解数组在Python中的工作方式。我从Matlab那里得到了这个想法,这个想法很简单,但是在这里我不知道为什么用TIME [:] [:]索引数组不起作用。

您知道我该怎么做吗? 谢谢。

0 个答案:

没有答案