python中3d数组的最大值



我想在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() )

相关内容

  • 没有找到相关文章

最新更新