bab*_*unk 3 python numpy recarray
我们为个别日期提供了一组数据重组 - 第一个属性是时间戳,其余属性是值.
其中几个:
ts a b c
2010-08-06 08:00, 1.2, 3.4, 5.6
2010-08-06 08:05, 1.2, 3.4, 5.6
2010-08-06 08:10, 1.2, 3.4, 5.6
2010-08-06 08:15, 2.2, 3.3, 5.6
2010-08-06 08:20, 1.2, 3.4, 5.6
Run Code Online (Sandbox Code Playgroud)
我们想要生成每个值的平均值数组(就好像您将所有日期数据放在彼此之上,并平均排列的所有值).所有匹配的时间戳都是时间,所以我们可以通过创建带有时间戳的结果重新排列,其他列全部为0来完成,然后执行以下操作:
for day in day_data:
result.a += day.a
result.b += day.b
result.c += day.c
result.a /= len(day_data)
result.b /= len(day_data)
result.c /= len(day_data)
Run Code Online (Sandbox Code Playgroud)
似乎更好的方法是将每天转换为只有数字的2d数组(减去时间戳),然后在一次操作中将它们全部按元素进行平均,但是我们找不到这样做的方法 - 它始终是一个对象数组.
有谁知道如何做到这一点?
有几种方法可以做到这一点.一种方法是选择重新排列的多个列并将它们转换为浮点数,然后重新形状化为2D数组:
new_data = data[['a','b','c']].astype(np.float).reshape((data.size, 3))
Run Code Online (Sandbox Code Playgroud)
或者,您可能会考虑这样的事情(可忽略的慢,但更具可读性):
new_data = np.vstack([data[item] for item in ['a','b','c']]).T
Run Code Online (Sandbox Code Playgroud)
另请注意,为这些操作查看pandas可能是个好主意,这样您就可以轻松处理异构数据.