我有一个像阵列的列表:
a = [array([6,2]),array([8,3]),array([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]
我不想内部数组转换成列表,因为列表的大小是非常大的。 此外,我故意创建这样的执行数组操作。
最简单的方法是转换成元组/列表进行比较的缘故(或实现自己的比较):
>>> max(a, key=tuple)
array([8, 3])
请注意,这是内置max
,而不是np.max
编辑:
对于多维数组,使用.tolist
方法:
max(a, key=operator.methodcaller('tolist'))
对数组定义是最大的,因为它在异常说,暧昧。 如果我们有以下的数组: [6, 2]
[5, 1]
那么我想输出应为[6, 2]
但如果我们具有下面的例子: [6, 2]
[7, 1]
然后将输出有什么要。
其实这里有最大的这么多不同的定义。 如果我们把数组为载体则最多可他们的大小,或者载体具有最大的x坐标等最大可以一样好比较数组的长度在列表中,并返回一个与大多数元素或在领带具有相等长度的那些中的第一个的情况下。
我的建议是创建一个抽象类的阵列结构,并与准确预期的结果有定义的最大操作。
python 3.2
a=[([6,2]),([8,3]),([4,2])]
max(a)
Its working well
有一个与IDX沿最大阵列,这是我现在使用的内容:
a = [array([6,2]),array([8,3]),array([4,2])]
In: max_a = map(max, a)
Out: max_a = [6,8,4]
In: idx = max_a.index(max(max_a))
Out: idx = 1
In: result = a[idx]
Out: reusult = [8,3]