带有列表的数组列表的python max

时间:2012-11-05 09:49:39

标签: python arrays list max

  

可能重复:
  python max of list of arrays

我有一个数组列表,如:

a = [array([ [6,2] , [6,2] ]),array([ [8,3],[8,3] ]),array([ [4,2],[4,2] ])]

我尝试了max(a),它返回以下错误:

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

我希望它返回列表或数组,如:

In: max(a)
Out: [[8,3],[8,3]]

我不想将内部数组转换为列表,因为列表的大小非常大。我也故意创建这样的数组操作。

3 个答案:

答案 0 :(得分:1)

在您的示例中,您可以执行以下操作:

max(a, key=lambda i: i[0][0])

取决于你想要的结果(用于排序的键),你可能需要“玩”索引。

http://docs.python.org/2/library/functions.html#max

答案 1 :(得分:0)

不管怎样,不确定你以前的答案是不够的,但是如果你正在处理numpy数组,那么为什么整个很少是数组,而不是数组列表...然后只使用适当的numpy函数:

from numpy import array

a = array(
    [
    array([ [6,2], [6,2] ]),
    array([ [8,3], [8,3] ]),
    array([ [4,2], [4,2] ])
    ]
)

print a.max(axis=0)
#[[8 3]
# [8 3]]

答案 2 :(得分:0)

怎么样:

max(a, key=lambda x:np.max(x))
# array ([[8, 3], [8, 3]])

请注意:第一个最大值是'normal max',第二个是np的最大值...这里的逻辑是max使用np.max作为比较的关键,np.max返回数组中的最大数字

是你想要的吗?