4

我是新手NumPy,我正在尝试计算一些简单的统计数据,例如medianstddev.

我想探索的“列”之一是时间差(作为类型的timedelta64 NumPy类型),但我不能ufuncs直接应用这些统计数据:

----> 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'

为什么会这样?

我知道我应该调查一下Pandas,但首先我想熟悉一下NumPy

4

1 回答 1

2

查看datetime的文档。它列出了您可以对timedelta对象执行的操作。除法是这样完成的:

t1 = t2 // i

请注意,这会计算地板并丢弃任何余数。

据我所知,您只能对timedelta对象执行这些操作。虽然也许我错了,你可以使用numpy操作。

我建议将timedelta对象转换为微秒,然后进行除法、标准差、中位数等:

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

(不过,我应该补充一点,我不完全确定 python 可以存储的最大整数值是多少,是否tdMicrosecs可以超过它。)

于 2012-07-21T15:33:59.813 回答