把浮点数量化成任意数量的二进制数的一般方法?

2024-06-30 05:42:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我想把最大值和最小值分别为X和{}的一系列数字量化成任意数量的箱子。例如,如果我的数组的最大值是65535,最小值是0(不要假设这些都是整数),并且我想将这些值量化到2的容器中,那么大于floor(65535/2)的所有值都将变成65535,其余的则变成{}。如果我想将数组从165535之间的任意数量化,类似的情况就会重复发生。我想知道,有没有一种高效、简单的方法可以做到这一点?如果不是,我如何才能有效地为2的幂次数做到这一点?虽然伪代码可以,但是Python+Numpy是首选。在


Tags: 方法代码numpy数量情况数字整数数组
1条回答
网友
1楼 · 发布于 2024-06-30 05:42:48

这不是最优雅的解决方案,但是:

MIN_VALUE = 0
MAX_VALUE = 65535
NO_BINS = 2   

# Create random dataset from [0,65535] interval
numbers = np.random.randint(0,65535+1,100)

# Create bin edges
bins = np.arange(0,65535, (MAX_VALUE-MIN_VALUE)/NO_BINS)

# Get bin values
_, bin_val = np.histogram(numbers, NO_BINS-1, range=(MIN_VALUE, MAX_VALUE))

# Change the values to the bin value
for iter_bin in range(1,NO_BINS+1):
    numbers[np.where(digits == iter_bin)] = bin_val[iter_bin-1]

更新

做同样的工作:

^{pr2}$

相关问题 更多 >