【发布时间】:2018-02-08 11:09:32
【问题描述】:
我有两个不同长度的 Python 列表。人们可能会假设其中一个列表比另一个大几倍。
两个列表包含相同的物理数据,但以不同的采样率捕获。
我的目标是对较大信号进行下采样,使其具有与较小信号完全相同的数据点。
我想出了以下代码,它基本上可以完成这项工作,但既不是 Python 风格,也不能以高性能的方式处理非常大的列表:
import math
a = [1,2,3,4,5,6,7,8,9,10]
b = [1,4.5,6.9]
if len(a) > len(b):
div = int(math.floor(len(a)/len(b)))
a = a[::div]
diff = len(a)-len(b)
a = a[:-diff]
else:
div = int(math.floor(len(b)/len(a)))
b = b[::div]
diff = len(b)-len(a)
b = b[:-diff]
print a
print b
如果更有经验的 Python 用户能详细说明解决此任务的替代方法,我将不胜感激。
非常感谢任何答案或评论。
【问题讨论】:
-
请注意,仅推进除法的地板可能会导致较长列表的较大累积错误!例如,如果一个列表有 7 个元素,而另一个有 4 个元素,则您将只取前四个元素,而不是其他所有元素。
-
@tobias_k 是的。然而,就我而言,一个列表可能有 80000 个元素,而另一个列表可能只有 300 个。
标签: python python-2.7 list numpy signal-processing