【问题标题】:How to find max values in a list of lists by corresponding indices using NumPy [duplicate]如何使用 NumPy 通过相应索引在列表列表中查找最大值 [重复]
【发布时间】:2018-10-20 22:59:08
【问题描述】:

我需要找到列表中所有索引项的最大值,这是有效的方法,numpy 是否有任何功能或有效且最好的 pythonic 方法,我的列表元素长度将超过 100,每个列表有 20 个元素。

例如:

[[1,2,3,4,5,6],[3,2,1,4,5,6],[4,3,2,1,5,6],[1,1,1,1,1,1]]
max_list = [4,3,3,4,5,6]

我的列表长度约为 100,每个内部列表包含 20 个元素

【问题讨论】:

  • 不确定您的约束是什么,但为什么不将列表列表转换为 numpy 数组,然后在您喜欢的任何轴上取最大值? (见docs.scipy.org/doc/numpy-1.14.0/reference/generated/…
  • Alex Hall 的回答非常好。太糟糕了,它是重复的(顺便说一句,很好的骗子找到了)

标签: python arrays numpy


【解决方案1】:

您可以使用以下内容:

a = np.array([[1,2,3,4,5,6],[3,2,1,4,5,6],[4,3,2,1,5,6],[1,1,1,1,1,1]])
a.max(0) #a.max(axis=0)

结果:

array([4, 3, 3, 4, 5, 6])

【讨论】:

    【解决方案2】:

    没有 numpy 的解决方案:

    data = [[1,2,3,4,5,6],[3,2,1,4,5,6],[4,3,2,1,5,6],[1,1,1,1,1,1]]
    list(map(max, *data))
    

    list 在 Python 2 中是不需要的(甚至在 Python 3 中,取决于你要对结果做什么)

    【讨论】:

    • 您可以解释一个不为人知的事实,即map 可以一次迭代多个列表。
    • 有个小问题。当data 仅包含一个子列表或为空时,它将不起作用。
    【解决方案3】:

    也没有 numpy(但在评论作者的帮助下)

    inp = [[1,2,3,4,5,6],[3,2,1,4,5,6],[4,3,2,1,5,6],[1,1,1,1,1,1]]
    out = [max(s) for s in zip(*inp)]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-19
      • 2018-10-24
      • 1970-01-01
      • 1970-01-01
      • 2012-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多