3

個々の日のデータの再配列のセットがあります。最初の属性はタイムスタンプで、残りは値です。

これらのいくつか:

    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)

毎日を数値のみの2D配列に変換し(タイムスタンプを削除)、1回の操作ですべての要素を平均化するのがより良い方法のようですが、これを行う方法は見つかりません-それは常にオブジェクトの1d配列です。

誰かがこれを行う方法を知っていますか?

4

1 に答える 1

8

これを行うにはいくつかの方法があります。1つの方法は、再配列の複数の列を選択してそれらを浮動小数点数としてキャストしてから、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

また、異種データを簡単に操作できるように、このような操作についてパンダを調べることをお勧めします。

于 2010-08-11T15:46:57.040 に答える