我想在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()
我不能在这里弄错,请帮助我。
答案 0 :(得分:5)
您正在使用不了解多维NumPy数组的内置max
函数。您必须使用以下之一:
pix.max()
numpy.max(pix)
numpy.amax(pix)
在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() )