代码之家  ›  专栏  ›  技术社区  ›  Yang Yang

`min()`在Python中不能正常工作?

  •  -3
  • Yang Yang  · 技术社区  · 1 年前

    我是Python的新手,在使用时注意到以下错误 min()

    import pandas as pd
    a = [1,2,3,4,5]
    print(min(20, pd.array(a)**2))
    

    代码应该返回[1,4,9,16,20],但是,它返回[1,3,9,14,16,25]。看起来 min() 未按预期工作。原因是什么?我该如何解决?非常感谢。

    2 回复  |  直到 1 年前
        1
  •  2
  •   ShadowRanger    1 年前

    min 在Python中,操作标量值,而不是值的集合。话虽如此, pandas 建立在的基础上 numpy numpy 提供这类元素的最小函数,因此通过混合 熊猫 numpy 你可以得到你所期望的:

    import pandas as pd
    import numpy as np  # Get numpy as well
    
    a = [1,2,3,4,5]
    
    # Creates a pandas array, but gets element-wise minimums via numpy.minimum
    print(np.minimum(20, pd.array(a)**2))
    

    哪个,在 the W3Schools pandas interpreter 我刚加载以进行验证,输出:

    <IntegerArray>
    [1, 4, 9, 16, 20]
    Length: 5, dtype: Int64
    

    有点令人惊讶,但很方便,这甚至返回了一个新的 熊猫 数组,而不是 numpy 大堆它们之间的集成足够深入,即使在非- 熊猫 作用

        2
  •  0
  •   Joo    1 年前

    我希望这是你想要的。

    import pandas as pd
    a = [1,2,3,4,5]
    b = pd.array(a)**2 < 20
    c = []
    
    for i in b:
        if i == True:
            c.append(a[i])
    print(min(c))