2013-04-09 2 views
2

파이썬에서 3d 배열의 최대 값을 찾고 싶습니다. 나는 파이썬에서 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

다차원 NumPy 배열을 이해하지 못하는 기본 제공 max 함수를 사용하고 있습니다. 대신 중 하나를 사용합니다

이 빠르게 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'를 사용하지 않습니다. –

0

무엇 georgesl 당신이

m = reduce(max, ar.flat) 

편집 같은 것을 을 배열에 대한 반복자를 얻을 수 flat을 사용하고 할 수있는 썼다하려면 다음 lambda을 제거, 기본 max 확인해야한다.