2012-07-21 3 views
4

저는 numpy에 익숙하지 않아 중간 값이나 stddev를 계산하는 것과 같은 간단한 통계에 사용하려고합니다. (팬더를 살펴 봐야하지만 처음에는 numpy을 익숙하게하고 싶습니다.) '항목'중 하나는 내가 탐구 할 시간 차이 (해당 유형 인 timedelta64의 NumPy와 타입)입니다,하지만 난 바로 그 통계 ufuncs를 적용 할 수 없습니다 :timedeltas를 numpy로 곱하거나 나눌 수없는 이유는 무엇입니까?

----> 1 age_request.std() 

TypeError: ufunc 'divide' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule 'safe' 

가 왜 그렇게입니까?

답변

2

documentation for datetime을 살펴보십시오. timedelta 개체에서 수행 할 수있는 작업을 나열합니다. Division은 다음과 같이 수행됩니다.

t1 = t2 // i 

나머지는 바닥을 계산하고 나머지는 버립니다.

내가 아는 한, timedelta 개체에서만이 작업을 수행 할 수 있습니다. 아마도 내가 틀렸고 numpy 작업을 사용할 수 있습니다.

나는 마이크로에 timedelta 개체를 변환 한 후 등 당신의 부서, 표준 편차, 평균, 일을 제안 : 내가 무엇을 최대 완전히 확실하지 않다 있다고하지만,

tdMicrosecs = td.microseconds + 1000.0 * td.seconds + 86400000000.0 * td.days 
tdQuotient = tdMicrosecs/i 

(나는 추가해야합니다을 정수 값은 파이썬이 저장할 수 있으며 tdMicrosecs이 초과 할 수 있습니다.)

+3

또는 Python> = 2.7 인 경우 timedelta.to_seconds()를 사용하면 부동 소수점 수를 초로 지정할 수 있습니다. – mtrw

+0

아마도 더 잘 작동 할 것입니다! :) – carmenism

+2

파이썬 3.3에서는 대신 timedelta.total_seconds()를 사용하십시오. –

관련 문제