首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将浮点数量化为任意数量的普通方法?

将浮点数量化为任意数量的普通方法?
EN

Stack Overflow用户
提问于 2018-05-09 06:33:01
回答 1查看 3.3K关注 0票数 2

我想把XY的最大值和最小值分别量化成任意数量的回收箱。例如,如果我的数组的最大值是65535,最小值是0 (不要假设这些值都是整数),并且我想将这些值量化到2回收箱中,那么所有比floor(65535/2)更多的值都会变成65535,其余的值将变成0。如果我想将数组从165535之间的任意数字量化,类似的故事会重复。我想知道,有没有一种有效而简单的方法来做到这一点?如果不是,我如何有效地做到这一点,因为有多少桶是2的功率?虽然伪代码很好,但首选Python + Numpy。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-09 09:00:43

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

代码语言:javascript
复制
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]

更新

做同样的工作:

代码语言:javascript
复制
import pandas as pd
import numpy as np

# or bin_labels = [i*((MAX_VALUE - MIN_VALUE) / (NO_BINS-1)) for i in range(NO_BINS)]
_, bin_labels = np.histogram(numbers, NO_BINS-1, range=(MIN_VALUE, MAX_VALUE))

pd.cut(numbers, NO_BINS, right=False, labels=bin_labels)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50246872

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档