栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Matplotlib直方图,带有收集箱,可实现高价值

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Matplotlib直方图,带有收集箱,可实现高价值

Numpy具有处理此问题的便捷功能:

np.clip
。尽管名称听起来像什么,但它不会
删除
值,只是将它们限制在您指定的范围内。基本上,它是内嵌Artem的“脏黑客”。您可以按原样保留值,但是在
hist
调用中,只需将数组包装在
np.clip
调用中,就像这样

plt.hist(np.clip(values_A, bins[0], bins[-1]), bins=bins)

这样做有很多好处,原因如下:

  1. 它的 方式 更快-至少对于大量元素。Numpy在C级别上工作。对python列表进行操作(如Artem的列表理解中所述)对每个元素都有很多开销。基本上,如果您可以选择使用numpy,则应该这样做。

  2. 您可以在需要的地方做正确的事,从而减少了在代码中出错的机会。

  3. 您不需要保留数组的第二个副本,这可以减少内存使用量(这一行内除外),并进一步减少出错的机会。

  4. 使用值

    bins[0], bins[-1]
    而不是对值进行硬编码可减少再次犯错的机会,因为您可以在
    bins
    定义的位置更改箱。您无需记住在拨打电话
    clip
    或在其他任何地方进行更改。

因此,按照OP中的说明将它们放在一起:

import matplotlib.pyplot as pltimport numpy as npdef plot_histogram_01():    np.random.seed(1)    values_A = np.random.choice(np.arange(600), size=200, replace=True)    values_B = np.random.choice(np.arange(600), size=200, replace=True)    bins = np.arange(0,350,25)    fig, ax = plt.subplots(figsize=(9, 5))    _, bins, patches = plt.hist([np.clip(values_A, bins[0], bins[-1]),np.clip(values_B, bins[0], bins[-1])],          # normed=1,  # normed is deprecated; replace with density          density=True,          bins=bins, color=['#3782CC', '#AFD5FA'], label=['A', 'B'])    xlabels = bins[1:].astype(str)    xlabels[-1] += '+'    N_labels = len(xlabels)    plt.xlim([0, 325])    plt.xticks(25 * np.arange(N_labels) + 12.5)    ax.set_xticklabels(xlabels)    plt.yticks([])    plt.title('')    plt.setp(patches, linewidth=0)    plt.legend(loc='upper left')    fig.tight_layout()plot_histogram_01()


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/648018.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号