【问题标题】:python: minimum value within specified bounds for an arraypython:数组指定范围内的最小值
【发布时间】:2020-09-20 07:09:37
【问题描述】:

假设我有一个数组 a = [-1.2, 1, 0.5, 4, 5, 3]

有没有办法找到 a=0.2 到 b=2 之间的最小元素

在这个特定的例子中,答案是 0.5。

我想在 python 中执行这个计算。 .

【问题讨论】:

  • 你知道如何获取该范围内的元素吗?你知道如何得到一些元素的最小值吗?
  • 不,我不知道如何回答您提出的第一个问题。你能告诉我吗?我知道如何处理第二部分

标签: python arrays max min


【解决方案1】:

您可以使用filter(predicate, list)generator expression 来消除越界值,然后对其余元素使用min(iterable)

a = [-1.2, 1, 0.5, 4, 5, 3]
assert 0.5 == min(filter(lambda x: 0.2 <= x <= 2, a))
# or
assert 0.5 == min(x for x in a if 0.2 <= x <= 2)

【讨论】:

    【解决方案2】:

    如果你可以使用 numpy:

    a = np.array([-1.2, 1, 0.5, 4, 5, 3])
    min(a[(a<2) & (a > 0.2)])
    

    【讨论】:

      【解决方案3】:
      a = [-1.2, 1, 0.5, 4, 5, 3]
      r1=0.2 
      r2=2
      l=[]
      for i in a:
          if i>r1 and i<r2:
              l.append(i)
      print(min(l))
      

      我已经严格考虑了两个给定的值,如果要包含两者,请使用 >=。希望这会有所帮助

      【讨论】:

        【解决方案4】:

        如果您使用边界(Min=0.2Max=2)扩展列表,则可以在扩展列表后通过索引来获取之间的元素:

        a =  [-1.2, 1, 0.5, 4, 5, 3]
        # define bounds
        Min = 0.2
        Max = 2
        # extend list with bounds
        a.extend([Min, Max])
        # sort list (default: ascending)
        a = sorted(a)
        # slicing
        print(min(a[a.index(Min)+1:a.index(Max)]))
        # 0.5
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-05-11
          • 2011-05-23
          • 2013-11-14
          • 2022-01-04
          • 2020-07-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多