python中3d数组的最大值

时间:2013-04-09 10:03:33

标签: python arrays numpy multidimensional-array

我想在python中找到3d数组的最大值。 我试过了

image_file1 = open("lena256x256.bmp","rb")
img_i = PIL.Image.open(image_file1)
pix = numpy.array(img_i);
maxval= max(pix)

但是我收到了错误

 File "test.py", line 31, in <module>
    maxval= max(pix)
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

我不能在这里弄错,请帮助我。

4 个答案:

答案 0 :(得分:5)

您正在使用不了解多维NumPy数组的内置max函数。您必须使用以下之一:

在1D NumPy阵列的情况下,这些也比内置更快。

答案 1 :(得分:2)

Max期望单个值,错误消息应该非常清楚,您要使用amax代替。

maxval = numpy.amax(pix)

答案 2 :(得分:0)

根据georgesl写的,你可以使用 flat获取数组的迭代器然后执行某些操作 像

m = reduce(max, ar.flat)

修改:删除lambda,默认max应该没问题。

答案 3 :(得分:-3)

np.max函数适用于矢量,而不适用于矩阵(或沿轴)。要使max元素成为多维数组,您可以使用flatten()maxval= pp.max( pix.flatten() )