Dav*_*ave 7 python list downsampling
我有一个包含许多条目的Python列表,我需要使用以下任一项进行缩减采样:
(我需要能够做到两种方式,但一次只能使用一种方式).
我相信,对于最大行数,我可以计算所需的比例并将其传递给比例缩减器:
def downsample_to_max(self, rows, max_rows):
return downsample_to_proportion(rows, max_rows / float(len(rows)))
Run Code Online (Sandbox Code Playgroud)
...所以我真的只需要一个下采样功能.有什么提示吗?
编辑:列表包含对象,而不是数值,所以我不需要插值.丢弃对象很好.
解:
def downsample_to_proportion(self, rows, proportion):
counter = 0.0
last_counter = None
results = []
for row in rows:
counter += proportion
if int(counter) != last_counter:
results.append(row)
last_counter = int(counter)
return results
Run Code Online (Sandbox Code Playgroud)
谢谢.
您可以使用islice从itertools:
from itertools import islice
def downsample_to_proportion(rows, proportion=1):
return list(islice(rows, 0, len(rows), int(1/proportion)))
Run Code Online (Sandbox Code Playgroud)
用法:
x = range(1,10)
print downsample_to_proportion(x, 0.3)
# [1, 4, 7]
Run Code Online (Sandbox Code Playgroud)