단일 플로트를 취해 단일 플로트를 반환하는 foo() 함수가 있습니다. numpy 행렬 또는 배열의 모든 요소에이 함수를 적용하는 가장 빠르고/가장 평범한 방법은 무엇입니까?numpy 행렬의 모든 요소에 대해 연산을 수행하는 방법은 무엇입니까?
은 내가 기본적으로 필요한 것은 루프를 사용하지 않는 코드의 버전입니다 :
import numpy as np
big_matrix = np.matrix(np.ones((1000, 1000)))
for i in xrange(np.shape(big_matrix)[0]):
for j in xrange(np.shape(big_matrix)[1]):
big_matrix[i, j] = foo(big_matrix[i, j])
저는 제가 천국 '그러나이 작업을 수행 할 수 있도록 할 NumPy와 문서에서 뭔가를 찾기 위해 노력했다 아무것도 찾지 못했습니다.
편집 : 의견에서 언급했듯이 구체적으로 내가해야 할 기능은 시그 모이 드 기능인 f(z) = 1/(1 + exp(-z))
입니다.
벡터화가 대답이라는 데 동의합니다. foo()가하는 함수를 다시 생각해보기를 원할 것입니다. 현재는 개별 요소에서 작동합니다. 벡터화는 전체 행/열을 한꺼번에 조작하여 루프를 제거하는 것을 의미합니다. –
'np.vectorize'는 일반적으로 일반적으로 가장 "파이썬"입니다. 그러나 어떤 함수'foo'의 경우 함수를 전혀 사용하지 않고'numpy' 벡터 연산을 사용하면 더 잘 수행 할 수 있습니다 ('np.vectorize'는 계산을보다 효율적으로 수행하기 위해 아무 것도하지 않기 때문에 더 잘 할 수 있습니다)). – mgilson
나는 특별히 시그 모이 드 함수를 사용하려고한다. 즉'f (z) = 1/(1 + exp (-z)) ' –