【发布时间】:2014-03-26 21:28:14
【问题描述】:
我有一些一维或二维的数据。我想遍历数据集中的每个模式并对其执行 foo() 。如果数据是 1D 则将此值添加到列表中,如果是 2D 则取内部列表的平均值并附加此值。 我看到了this question,并决定实施它来检查列表的实例。我不能在这个应用程序中使用 numpy。
outputs = []
for row in data:
if isinstance(row, list):
vals = [foo(window) for window in row]
outputs.append(sum(vals)/float(len(vals)))
else:
outputs.append(foo(row))
有没有更简洁的方法来做到这一点?在每次运行时,每个模式都将具有相同的维度,因此我可以为 1D/2D 创建一个单独的类,但这会在我的代码中添加很多类。数据集可能会变得非常大,因此最好采用快速解决方案。
【问题讨论】:
-
我会检查 hasattr(row[0], '_iter_') 而不是 isinstance(),但我认为没有更快或更多的方法优雅的方式。
-
对我来说看起来很整洁
-
Python3.4(如果你有幸使用它的话)介绍了一个statistics module
-
@knitti
collections.Iterable应该被使用,__iter__字符串失败。
标签: python list multidimensional-array