它会给我啥以及如何访问这些元素?

Posted

技术标签:

【中文标题】它会给我啥以及如何访问这些元素?【英文标题】:What will it give me and how to access the elements?它会给我什么以及如何访问这些元素? 【发布时间】:2019-01-16 21:34:31 【问题描述】:

请看这段代码:

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 将被聚合,因此它将是一个列表列表数组!

我的问题是:如何处理(索引,...),是否有最简单的方法来进行,通过在循环中生成数组列表,但如何将其保存在数据结构中?

谢谢

【问题讨论】:

这里i有什么用? 你需要用它来做什么?轻松访问数据?矩阵处理?也许看看 numpy ndarrays 等 @Bazingaa。实际上,我并没有将所有代码都集中在我的问题上,但大致上,请记住 i 的不同值会给出不同的 sig (从一个i到另一个的长度不必相同。希望很清楚 您是否尝试过考虑列表理解?它会让你的代码不那么冗长 使用extend而不是append来删除列表问题呢?类似temp.extend(....) 【参考方案1】:

关于索引,您只需引用 sig_array[0]sig_array[1][2]sig_array[3][0][2] 等元素。

关于任何更好的数据结构,它实际上只取决于您的用例。正如@smagnan 在 cmets 中所说,您是否使用它来轻松访问数据?矩阵处理?如果是这样,请查看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 循环中,

这将具有与您的代码完全相同的输出,但显然 方式 更短:)

【讨论】:

我在上面的cmets中已经解释了我的“原因”,你能看看吗? @Adi219:如果你也向他简要解释一下列表中发生的事情,特别是替换i_,这将对OP有所帮助。我问他i。可能他需要一些取决于i 的操作。所以最好解释一下。也只需将range (0, len (sig)) 替换为range(len (sig)) @Bazingaa 感谢您的关心。另外,考虑到我下面提到的“需求”,你有一个数据结构可以告诉我吗? @MysteryGuy 我已经对其进行了编辑以满足您的“需求”。 @Adi219 看到你对pandas 的编辑,但在tuto 中,他们只是读了一篇写得很好的csv,没关系。就我而言,我正在阅读 EEG 文件,需要自己构建数据

以上是关于它会给我啥以及如何访问这些元素?的主要内容,如果未能解决你的问题,请参考以下文章

Django 有时给出 404 有时给出 200

Eclipse 新建包的时候它会给我自动生成一个package-Info.java文件

OpenCV:矩阵元素访问

WEBGIS的毕业设计!我啥都不会啊,完全不知道如何下手,希望有人来给我说说!题目如下。

在Swift中使用Realm进行过滤,给我一个对象数组,但是当打印一个属性时,它会给我一个空字符串

当我在 ngOnInit() 中使用 router.getCurrentNavigation() 时,它会给我类型错误,但是当我在构造函数中使用它时,它工作正常,为啥?