2017-10-12 19 views
1

NdArray에 최소 및 최소의 인덱스를 계산하고, 나는 배열의 min을 발견하고 [x,y] 형식으로 min의 인덱스를 얻고 싶은 물론PYTHON - 내가 <code>n*n</code> 배열을

,이 수 for 루프를 사용하고 임시 변수를 사용하여 수행 할 수 있지만이 작업을 수행하는 더 정교한 프로세스를 찾고 있습니다.

예 -

[[1,2,8], 
    [7,4,2], 
    [9,1,7], 
    [0,1,5], 
    [6,-4,3]] 

나는 다음과 같은 출력 가야 -

Output- 
    Min = -4 
    Index = [4,1] 

내가 비슷한 구현할 수 있습니까?

TIA.

답변

2

글로벌 최소 값과 인덱스

argmin 인덱스를 얻을 배열을 평평하게. np.unravel_index을 사용하여 해당 행 - 열 인덱스를 가져옵니다. 또한 최소값에 대해 색인을 평평하게 한 argmin 색인을 사용하여 병합 된 배열에 색인을 지정합니다.

def smallest_val_index(a): 
    idx = a.ravel().argmin() 
    return a.ravel()[idx], np.unravel_index(idx, a.shape) 

샘플 실행 -

In [182]: a 
Out[182]: 
array([[ 1, 2, 8], 
     [ 7, 4, 2], 
     [ 9, 1, 7], 
     [ 0, 1, 5], 
     [ 6, -4, 3]]) 

In [183]: val, indx = smallest_val_index(a) 

In [184]: val 
Out[184]: -4 

In [185]: indx 
Out[185]: (4, 1) 

글로벌 최대 값과 인덱스 마찬가지로

, 글로벌 maximum 값을 얻기 위해 사용 argmax -

def largest_val_index(a): 
    idx = a.ravel().argmax() 
    return a.ravel()[idx], np.unravel_index(idx, a.shape) 

샘플 실행 -

In [187]: a 
Out[187]: 
array([[ 1, 2, 8], 
     [ 7, 4, 2], 
     [ 9, 1, 7], 
     [ 0, 1, 5], 
     [ 6, -4, 3]]) 

In [188]: largest_val_index(a) 
Out[188]: (9, (2, 0))