变维数组
Variable dimension array
我正在尝试将一些数据保存到 python。数据由一系列文本分隔文件组成。问题是文件有不同的 len() 而我在阅读之前不知道 len() 。
我想知道是否可以将文件保存在二维数组中,如下所示:
s1 s2 s3 s4 s5 ..
s1 s2 s3 s4 s5 ..
.. s2 s3 .. s5 ..
.. .. s3 s5 ..
s5 ..
在这种情况下,如果我想访问信号 1 中的所有值,我会做这样的事情:
s[:,0]
我也在考虑在 for 循环中实现它。
read_data 是一个函数,returns 一个包含处理过的文件的数组, files 一个包含所有文件路径的列表
for i in range(len(files)):
all_files[:,i] = read_data(files[i])
但是,由于我没有在 all_files 之前启动,所以这将不起作用。与此同时,如果我想在阅读之前启动 all_files,我将努力了解我将使用什么 "vertical" 维度,因为 "horizontal" 应该更容易:len(files)。
这可能是一种粗略的做法,但您可以获得最大的
使用以下代码段计算所有文件的长度。您可以将其用于垂直尺寸的大小。
max_len = 0
for i in len(files):
if len(files[i]) > max_len:
max_len = len(files[i])
我会将文件数据收集在一个列表中——一个列表的列表——然后担心将其重新打包为一个数组。附加到列表很便宜。
例如
all_files = []
for i in range(len(files)):
all_files.append(read_data(files[i]))
现在您可以获得文件数量 N=len(all_files)
和最大长度 M=max(len(f) for f in all_files)
等信息。
all_data = np.zeros((N,M)), dtype=???)
for i in range(N):
all_data[i,:] = pad_function(all_files[i])
其中 pad_function
填充一个文件中的数据以适应最大大小。
另一种方法是找出要在 all_data 中放置数据的位置,然后创建一个索引向量 j = [0,1,3,5,...]
:
all_data[i,j] = all_files[i]
我正在尝试将一些数据保存到 python。数据由一系列文本分隔文件组成。问题是文件有不同的 len() 而我在阅读之前不知道 len() 。 我想知道是否可以将文件保存在二维数组中,如下所示:
s1 s2 s3 s4 s5 ..
s1 s2 s3 s4 s5 ..
.. s2 s3 .. s5 ..
.. .. s3 s5 ..
s5 ..
在这种情况下,如果我想访问信号 1 中的所有值,我会做这样的事情: s[:,0]
我也在考虑在 for 循环中实现它。 read_data 是一个函数,returns 一个包含处理过的文件的数组, files 一个包含所有文件路径的列表
for i in range(len(files)):
all_files[:,i] = read_data(files[i])
但是,由于我没有在 all_files 之前启动,所以这将不起作用。与此同时,如果我想在阅读之前启动 all_files,我将努力了解我将使用什么 "vertical" 维度,因为 "horizontal" 应该更容易:len(files)。
这可能是一种粗略的做法,但您可以获得最大的 使用以下代码段计算所有文件的长度。您可以将其用于垂直尺寸的大小。
max_len = 0
for i in len(files):
if len(files[i]) > max_len:
max_len = len(files[i])
我会将文件数据收集在一个列表中——一个列表的列表——然后担心将其重新打包为一个数组。附加到列表很便宜。
例如
all_files = []
for i in range(len(files)):
all_files.append(read_data(files[i]))
现在您可以获得文件数量 N=len(all_files)
和最大长度 M=max(len(f) for f in all_files)
等信息。
all_data = np.zeros((N,M)), dtype=???)
for i in range(N):
all_data[i,:] = pad_function(all_files[i])
其中 pad_function
填充一个文件中的数据以适应最大大小。
另一种方法是找出要在 all_data 中放置数据的位置,然后创建一个索引向量 j = [0,1,3,5,...]
:
all_data[i,j] = all_files[i]