2013-04-09 70 views
2

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

我不能在這裏抓到我的錯,請幫幫我。

回答

5

您正在使用內置max函數,該函數不理解多維NumPy數組。您必須改用之一:

這些也比1D與NumPy陣列的情況下,內置更快。

2

Max正在等待一個值,錯誤信息應該很清楚,您想用amax代替。

maxval = numpy.amax(pix) 
-3

的np.max函數適用於載體中,不矩陣(或沿着軸線)。若要將最大元素設置爲多維數組,您可以使用flatten()maxval= pp.max(pix.flatten())

+4

這是不正確的。 'numpy.max'是理解多維數組的['numpy.amax'](http://docs.scipy.org/doc/numpy/reference/generated/numpy.amax.html)的別名。然而,OP沒有使用'numpy.max'。 – 2013-04-09 11:53:56

0

按照什麼georgesl寫的,你可以使用 flat以獲取數組的迭代器,然後做一些像

m = reduce(max, ar.flat) 

編輯:刪除lambda,默認max應該沒問題。