我正在使用Python3,我想从几个CSV文件加载数据。 每个CSV(一个度量)有3列(3个不同的物理量)。我想在3个独立的变量上加载每个数量。对于一个CSV文件,这非常简单,我使用了:
TIME,CH1,CH2 = loadtxt(file_path,usecols=(3,4,5),delimiter=',',skiprows=2,unpack=True)
而且效果很好。现在我想扩展这个过程,以便可以加载几个CSV文件。每个数组都是二维的,每列代表一个CSV文件。我将使用3个2D数组,而不是几个带有3个变量的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得到这个想法,非常简单,但我不知道为什么用时间[:][:]索引数组不起作用。你知道吗
你知道我怎么做吗? 谢谢。你知道吗
使用
np.array
,而不是np.matrix
我怎么强调都不为过。
np.matrix
仅因遗留原因而存在。有关差异的解释,请参见this answer。np.matrix
需要两个维度,而np.array
在索引时允许一个维度。这似乎是你错误的根源。你知道吗下面是一个展示你所看到的行为的小例子:
因此,将结果数组定义为
np.array
对象:相关问题 更多 >
编程相关推荐