【问题标题】:Custom Range in numpy histogramnumpy直方图中的自定义范围
【发布时间】:2022-01-20 18:50:02
【问题描述】:

尝试使用 numpy 输出直方图数据;

NUMBER_OF_PRICE_BRACKETS = 8
HISTOGRAM_EDGE_RANGE = (0, 1_000_000)

hist, bin_edges = numpy.histogram(price_list, bins=NUMBER_OF_PRICE_BRACKETS, range=HISTOGRAM_EDGE_RANGE)

我使用上面的代码得到以下输出

hist: [0, 6, 6, 0, 0, 0, 0, 0],
bin_edges: [0.0, 125000.0, 250000.0, 375000.0, 500000.0, 625000.0, 750000.0, 875000.0, 1000000.0]

自动计算边缘。是否有任何选项可以像下面的示例输出那样强制创建边缘?

hist: [0, 6, 6, 0, 0, 0, 0, 0]
bin_edges: [0.0, 100000.0, 150000.0, 300000.0, 450000.0, 600000.0, 750000.0, 900000.0, 1000000.0]

也许使用范围选项

range=(0, 1_000_000, 150)

【问题讨论】:

  • np.arange(0, 1_000_000, 150_000) ?
  • @user17242583 尝试将 ... range=np.arange(0, 1_000_000, 150_000) 不起作用
  • 您能澄清一下这个问题吗?我不明白。
  • @canpoint 那是因为你没有使用正确的边界
  • @richardec 能够查看自定义边界

标签: python numpy histogram


【解决方案1】:

您有两个选择,因为histogram 将始终将您的数据拆分为等间距的 bin,就像使用

np.linspace(*HISTOGRAM_EDGE_RANGE, NUMBER_OF_PRICE_BRACKETS + 1)

选项 1: 手动提供不均匀的箱子:

HISTOGRAM_EDGES = np.array([
    0, 150_000, 300_000, 450_000, 600_000,
    750_000, 900_000, 1_000_000])
hist, bin_edges = numpy.histogram(price_list, bins=HISTOGRAM_EDGES)

选项 2: 调整您的范围,使其均匀地分成您想要的箱数:

NUMBER_OF_PRICE_BRACKETS = 8
HISTOGRAM_EDGE_RANGE = (0, 1_050_000)

hist, bin_edges = numpy.histogram(price_list, bins=NUMBER_OF_PRICE_BRACKETS, range=HISTOGRAM_EDGE_RANGE)

【讨论】:

    【解决方案2】:

    仅将bins 参数定义为整数值会自动选择值范围。但是,您也可以将 list/numpy 数组作为参数提供给 bins,例如,

    hist, bin_edges = np.histogram(price_list, bins=np.linspace(0, 1000000, 10) )
    

    结果

    bin_edges = [0.,  111111.11111111,  222222.22222222, 333333.33333333,  444444.44444444,  555555.55555556, 666666.66666667,  777777.77777778,  888888.88888889, 1000000. ]
    

    请注意,我没有在那里使用range 参数。

    【讨论】:

    • 它在与 linspace 一起使用时输出随机生成的 bin 范围,它与使用 np.array(range(0, 1_000_000, 150_000)) 一起工作,谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-11
    • 1970-01-01
    • 2021-05-08
    • 2022-08-09
    • 1970-01-01
    • 2010-12-03
    • 1970-01-01
    相关资源
    最近更新 更多