首页 > 解决方案 > 优化 Python 代码以量化浮点数序列

问题描述

我想模仿数字化模拟信号的过程,所以我正在编写代码来获取一个随机的浮点数组并将它们转换为具有一定位深度的整数数组。

我有完成工作的代码,但问题是它非常缓慢且成本高昂,我认为有更好的方法来做到这一点。我目前正在为某个位深度创建 bin,然后简单地浏览我的浮点列表,查看它们适合哪个 bin,然后创建一个字典,将浮点映射到整数值。这是我的代码:

import numpy as np


def quantize_float(list_of_floats, bit_depth):

    MIN_VALUE = np.min(list_of_floats)
    MAX_VALUE = np.max(list_of_floats)
    NO_BINS = 2**(bit_depth) + 1

    _, bin_val = np.histogram(list_of_floats, NO_BINS-1, range=(MIN_VALUE, MAX_VALUE))

    bin_val = bin_val.tolist()
    mapping = dict()

    for i in list_of_floats:
        mins = []
        for j in bin_val:
            mins.append(abs(j-i))

        #bin_ = bin_val.index(min(bin_val, key = lambda x:abs(x-i)))
        bin_ = mins.index(min(mins))
        mapping[str(i)] = bin_

    return mapping

位深度为 4 或 8 的情况似乎很好,但我必须在它以 24 或更大的位深度吃掉我的计算机内存之前停止执行。

标签: pythonoptimization

解决方案


推荐阅读