我想在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()
您正在使用不理解多维NumPy数组的内置max
函数。您必须使用以下选项之一:
-
pix.max()
-
numpy.max(pix)
-
numpy.amax(pix)
在1D NumPy数组的情况下,这些也比内置更快。
Max期望一个单一值,错误消息应该很清楚,您想使用amax
代替。
maxval = numpy.amax(pix)
根据georgesl所写的,您可以使用flat
获取数组的迭代器,然后做一些事情像
m = reduce(max, ar.flat)
编辑:删除lambda
,默认的max
应该是OK的
Max函数适用于向量,而不是矩阵(或沿轴)。要使max元素成为多维数组,您可以使用flatten()
: maxval= pp.max( pix.flatten() )