2016-06-07 3 views
1

사용자 입력에 따라 numpy.array의 평균 또는 중간 값을 계산하는 함수가 있습니다. 나는 이것을 이렇게 썼다.numpy에서 한 함수의 평균 또는 중앙값 계산

import numpy as np 
... 
if input=='means': 
     return np.mean(matrix, axis=1) 
if input=='median': 
    return np.median(matrix, axis=1) 

그러나 이것은 다소 번거로워 보인다. 나는 입력뿐만 아니라 배열을 취하는 표준 numpy 함수가있을 것이라고 생각했다. 나는 R의 tapply(X, Y, FUNCTION=Z)과 비슷한 것을 생각하고 있는데, Z은 어떤 종류의 함수도 될 수 있습니다. 하지만 docs 또는 Google에서 아무 것도 찾을 수 없었습니다 ...

  • Numpy에는 다음과 같은 것이 있습니까?
  • 특정 기능이 없다면 누군가가 의 좋은 방법을 생각할 수 있습니까?

감사합니다. 당신의 입력 문자열이 mean 대신 means 경우

답변

2

, 당신은 할 수 :

return getattr(np, input)(matrix, axis=1) 

다음은 getattr 전화는 당신이 NumPy와 라이브러리에서 원하는 기능을 잡고. 그런 다음 두 번째 괄호 집합이 해당 함수를 호출합니다.

+0

좋은, 나는'getattr'에 대해 알고하지 않았다, 감사 : 그럼

def myFunc(matrix, func, axis=1): return func(matrix) 

이 기능을 사용하는 방법! 축을 1에서 -1로 변경 한 이유가 있습니까? – patrick

+0

그건 오타였습니다. 나는 그것을 고쳤다. – farenorth

2

NumPy에 특정한 것이 필요하다고 생각하지 않습니다. 예를 들어

:

import numpy as np 

#Create random matrix (10, 10) 
mat = np.random.randint(100, size=(10, 10)) 
print myFunc(mat, np.mean)