当前位置: 首页 > 面试题库 >

Python:检查值属于哪个bin

耿炎彬
2023-03-14
问题内容

我有一个值列表和bin边缘列表。现在,我需要检查所有值属于它们的bin。除了遍历值然后遍历bin并检查该值是否属于当前bin之外,还有没有比Python更有效的方法了,例如:

my_list = [3,2,56,4,32,4,7,88,4,3,4]
bins = [0,20,40,60,80,100]

for i in my_list:
    for j in range(len(bins)):
        if bins(j) < i < bins(j+1):
            DO SOMETHING

对我来说,这看起来并不漂亮。谢谢!


问题答案:

可能为时已晚,但为将来参考,numpy具有执行此操作的功能:

http://docs.scipy.org/doc/numpy/reference/generated/numpy.digitize.html

>>> my_list = [3,2,56,4,32,4,7,88,4,3,4]
>>> bins = [0,20,40,60,80,100]
>>> np.digitize(my_list,bins)
array([1, 1, 3, 1, 2, 1, 1, 5, 1, 1, 1])

结果是与my_list中的每个元素也属于的bin中的bin对应的索引数组。请注意,该函数还将合并落在您的第一个和最后一个合并边缘之外的值:

>>> my_list = [-5,200]
>>> np.digitize(my_list,bins)
array([0, 6])

熊猫也有类似的东西:

http://pandas.pydata.org/pandas-docs/dev/basics.html#discretization-and-
quantiling

>>> pd.cut(my_list, bins)
Categorical: 
array(['(0, 20]', '(0, 20]', '(40, 60]', '(0, 20]', '(20, 40]', '(0, 20]',
       '(0, 20]', '(80, 100]', '(0, 20]', '(0, 20]', '(0, 20]'], dtype=object)
Levels (5): Index(['(0, 20]', '(20, 40]', '(40, 60]', '(60, 80]',
                   '(80, 100]'], dtype=object)


 类似资料:
  • 我有一些像这样的数组,一个dn一些简单的字符串 我需要检查属于哪个数组字符串,并返回数组名称,我已经尝试了类似的方法 我试着用包括,它retunr真或假,但我认为这是不可能的?任何简单的解决方案,谢谢:)也可以有两个以上的数组

  • 问题内容: 我需要一种检查类的方法,以便可以安全地标识哪些属性是用户定义的类属性。问题是,像DIR功能(),inspect.getmembers()和朋友返回所有类的属性包括预定义的像:,,,。这当然是可以理解的,并且可以说我可以列出一个要忽略的命名成员列表,但是不幸的是,这些预定义属性必定会随着不同版本的Python发生变化,因此使我的项目在python项目中容易发生变化- 我不喜欢那样。 例:

  • 问题内容: float(‘nan’)结果为Nan(不是数字)。但是,如何检查呢?应该很容易,但是我找不到。 问题答案: 返回如果为(非数字),以及其他。

  • 问题内容: 如果我有字典,并且想检查一下,则可以将其作为一个块(非常好!),也可以使用方法作为默认值。 我想为做同样的事情。也就是说,如果尚未设置对象,我已经有要返回的对象,但这给了我类似的错误 AttributeError:’bool’对象没有属性’attribute’ 问题答案: 更直接的类似物比是。 (在哪里是可选的,如果未找到,则在no属性上引发异常。) 例如,您将通过。

  • 问题内容: 我能够运行gensim的LDA代码,并获得各自关键词的前10个主题。 现在,我想更进一步,通过查看将哪些文档归类到每个主题中,来了解LDA算法的准确性。gensim LDA有可能吗? 基本上我想做这样的事情,但是在python中并使用gensim。 具有主题模型的LDA,如何查看不同文档属于哪些主题? 问题答案: 使用主题的概率,您可以尝试设置一些阈值并将其用作聚类基线,但是我敢肯定,