我有一个包含许多条目的Python列表,我需要使用以下任一选项进行降采样:

  • 最大行数。例如,将1234个条目的列表限制为1000个。
  • 原始行的一部分。例如,使列表的长度为其原始长度的1/3。

  • (我需要能够同时使用两种方法,但一次只能使用一种)。

    我相信,对于最大的行数,我可以只计算所需的比例并将其传递给比例缩小器:
    def downsample_to_max(self, rows, max_rows):
            return downsample_to_proportion(rows, max_rows / float(len(rows)))
    

    ...所以我真的只需要一个下采样功能。有什么提示吗?

    编辑:该列表包含对象,而不是数字值,因此我不需要进行插值。放下物体很好。

    解决方案:
    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
    

    谢谢。

    最佳答案

    保留一个计数器,您将其增加第二个值。每次对其进行下限,并在该索引处产生值。

    关于python - 对列表中的条目数进行下采样(无插值),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3012721/

    10-10 21:15
    查看更多