はじめに
matplotlibのFuncAnimationで1次元のランダムウォークアニメーションを表示する。
コード
解説
モジュールのインポート
データの生成
Wは動く回数であり、ここでは500とした。
stepはnp.random.choice([-1,1],W) により-1 か1を500回ランダムに選択した配列となる。
positionはnp.cumsum(step)により、累積和とすることで順次変化するランダムウォークの位置となる。
1次元のランダムウォークデータの表示
上記で作成したデータを表示すると以下のようになる。
アニメーションの表示
p1,で空のプロットを作成して、データを流し込んでいく。
データのセットには、set_dataを用いる。
データの更新に伴ってx軸の表示範囲も変化させる。ax.set_xlim(0,x[i+1])とすることでx軸の表示範囲を徐々に大きくできる。
ani = animation.FuncAnimationとし、このaniをHTML(ani.to_html5_video())とすることでjupyter lab(notebookも)上でアニメーションを表示できる。
コードをダウンロード(.pyファイル) コードをダウンロード(.ipynbファイル)参考
Numpyによる乱数生成まとめ - Qiita
Python標準にも random というモジュールがあるが、ベクトル演算の可能な numpy のほうが「大量に乱数を生成してなんかの処理をする」という場合に高速に動く。あと分布関数が山ほど用意され…
numpy.random.choice — NumPy v1.15 Manual
numpy.cumsum — NumPy v2.2 Manual
コメント