我们为个别日子提供了一组数据重组 - 第一个属性是时间戳,其余属性是值。
其中几个:
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
我们想要生成每个值的平均值数组(就好像您将所有日期数据放在彼此之上,并平均排列的所有值)。所有匹配的时间戳都是时间,因此我们可以通过创建带有时间戳的结果重新排列,其他列全部为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)
似乎更好的方法是将每天转换为只有数字的二维数组(减去时间戳),然后在一次操作中将它们全部按元素进行平均,但我们找不到方法这样做 - 它总是一个对象数组。
有谁知道怎么做?
答案 0 :(得分:8)
有几种方法可以做到这一点。一种方法是选择重新排列的多个列并将它们转换为浮点数,然后重新整形为2D数组:
new_data = data[['a','b','c']].astype(np.float).reshape((data.size, 3))
或者,您可能会考虑这样的事情(可忽略的慢,但更具可读性):
new_data = np.vstack([data[item] for item in ['a','b','c']]).T
另请注意,查看pandas这样的操作可能是个好主意,这样您就可以轻松处理异构数据。