6

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

4 回答 4

10

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

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

于 2013-04-09T11:45:13.073 回答
4

Max 期望单个值,错误消息应该很清楚,您想amax改用它。

maxval = numpy.amax(pix)
于 2013-04-09T10:08:37.553 回答
0

根据 georgesl 写的内容,您可以使用 flat获取数组的迭代器,然后执行类似的操作

m = reduce(max, ar.flat)

编辑:去掉lambda,默认max应该没问题。

于 2013-04-09T11:55:05.293 回答
-3

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

于 2013-04-09T10:17:52.430 回答