我有一个数组列表,如:
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]]
我不想将内部数组转换为列表,因为列表的大小非常大。我也故意创建这样的数组操作。
答案 0 :(得分:1)
在您的示例中,您可以执行以下操作:
max(a, key=lambda i: i[0][0])
取决于你想要的结果(用于排序的键),你可能需要“玩”索引。
答案 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返回数组中的最大数字
是你想要的吗?