请看一下这段代码:
sig_array=[]
...
for i in range (0, 2):
....
temp=[]
for k in range (0, len (sig)):
#print (k)
temp.append(downsample(sig[k],sampl, new_freq))
sig_array.append(temp)
换句话说,temp
是一个数组列表(我的downsample
函数,顾名思义,返回一个数组),然后temp
将被聚合,这样是数组列表的列表!
我的问题是:如何处理(索引,...),是否有最简单的方法进行处理,即在循环中生成数组列表,但如何将其保留在数据结构中?
谢谢
答案 0 :(得分:0)
关于索引编制,您只需要引用sig_array[0]
,sig_array[1][2]
或sig_array[3][0][2]
等元素即可。
关于任何更好的数据结构,实际上仅取决于您的用例。正如@smagnan在评论中所说,您是否正在使用它轻松访问数据?矩阵处理?如果是这样,请查看numpy ndarrays
。 您说您需要它来进行时间序列分析中的大数据。在这种情况下,使用pandas
模块将非常有帮助(more info)。
此外,就像@Bazingaa所说的那样,您可以使用list
理解(more info)来减少代码的详细程度:
sig_array = [ [downsample(sig[i],sampl, new_freq) for i in range (len(sig))] for _ in range(2)]
对于list
的理解,最好从外部开始,从结尾开始。 for _ in range(2)
将运行两次(由于看不到您在任何地方使用它,因此我将i
替换为_
。如果需要,请将_
替换为相关变量名称)。在每次迭代中,它会将append
的内部列表理解为sig_array
。在内部listcomp内部,对于downsample()
循环的每次迭代,list
函数的结果将附加到临时for
上,
这将与您的代码完全相同的输出,但是显然 way 更短:)