2014-06-11 2 views
0

플로트 벡터 (배열의 연산에서 나온)와 float 값 (실제로 배열의 요소이지만 중요하지 않습니다)이 있습니다. 그들 가운데 가장 작은 것.파이썬에서 배열과 값 최소화하기

'Pythony'방식으로 한 줄에 최소값을 찾을 수 있기를 바랍니다.

MinVec = N[i,:] + N[:,j] 
    Answer = min(min(MinVec),N[i,j]) 

분명히 두 개의 최소화 호출을 수행하고 있습니다.이 호출을 하나의 호출로 대체 할 수 있기를 바랍니다. 아마도 벡터 MinVec도 제거 할 수 있습니다.

제쳐두고, 이것은 동적 프로그래밍의 짧은 프로그램을위한 것입니다. TIA.

편집 : 사과, 내가 numpy을 사용했다 지정하지 않았다. 변수 N은 배열입니다.

+2

일반적으로 "Pythonic"이라고 표시합니다. –

+1

'N [i, j]'가'MinVec'의 요소가 아닌가요? – jwalker

+0

@jwalker 아니요. 'MinVec'은 'N'의 두 슬라이스의 요소 별 합계 (* 연결 * 아님 * 연결)이기 때문입니다. 'MinVec '의 어떤 요소도 반드시'N'에 존재하지 않습니다. – Brionius

답변

1

값을 추가 한 다음 최소화 할 수 있습니다. 그래도, 두 방법의 상대적인 시간 고려 사항이 무엇인지 확실하지 않다 - 나는 반드시이 빨리 가정하지 않을 :

Answer = min(np.append(MinVec, N[i, j])) 
+0

하지만, 'Minvec'의 값이 바뀌었고 다시 사용할 지 여부가 명확하지 않습니다. –

+0

아니요, numpy 문서에서 : [추가는 내부에서 발생하지 않으므로 새 배열이 할당되고 채워집니다.] (http://docs.scipy.org/doc/numpy/reference/ generated/numpy.append.html) – Brionius

+0

아, 이것이 numpy인지 알지 못했습니다. 우리는 바닐라 파이썬 목록을 다루고 있다고 생각했습니다. –

-1

이 위에서 만 NumPy와를 사용하지 않고 대답과 같은 것입니다.

Answer = min(MinVec.append(N[i, j])) 
+0

OP가 명시 적으로 그렇게 말하지는 않지만, 코드는 MinVec이 numpy 배열임을 의미하므로 'append' 메소드를 포함하지 않습니다. – Brionius

+0

그는 pythonic 방법을 찾고 결코 numpy 배열을 지정하지 않았다고 말했다. 내 잘못이야. – rhodysurf