Posts for: #Python

magma-nvimで理想に近いVimでのJupyter環境を作る

magma-nvimで理想に近いVimでのJupyter環境を作る

vimで開発しているとブラウザからJupyterを触るのが嫌になってきます。

  • 開発中にターミナルとブラウザへ移動が面倒
  • vimで使っているformatterとかlinterをそのまま使いたい
  • Jupyter上でもvimキーバインドを設定しているけど、ブラウザのキーバインドと被る
  • vimからIPython上に実行結果を表示する方法もあるが、残念ながらめんどくさかったりで運用面があわない
  • PyCharmやVSCodeを使えばいいじゃんという声が聞こえてきますが、とりあえずPyCharmは気になるところが多くて疲れました…

前々からvimで完結するようにしたいなぁと思っていたのですが、ようやくそれがある程度実現されてきたので紹介していきます。

m3u8ファイルとtsファイルのdownload

ライブストリーミングや動画の配信するためにm3u8とtsファイルを利用するケースがあります。 tsファイルは細切れになった小さい動画になっており、m3u8ファイルはそれらの情報をもっているプレイリストになります。

Sum Treeで重みにそってサンプリングする(Python実装)

Sum Treeで重みにそってサンプリングする(Python実装)

問題設定

次のような設定でサンプリングをしたいことはよくあると思います。

3つのデータがあり、それぞれに重みがつけられているとする。
それぞれ、データ1の重みは10、データ2の重みは20、データ3の重みは30である。
このときに各データの重みと全体の重みの和の比を確率としてサンプリングをしたい。
つまり、データ1は10/60、データ2は20/60、データ3は30/60の確率でサンプリングすることになる。

シンプルな方法

さきほどの問題設定のとき、簡単にサンプリングする方法は正規化された重みの和を順に足していき、一様分布からサンプリングした乱数がその和を超えたときのデータを取得するという方法です。 手順は次のようになります。

Pythonのnamedtupleを使おう

本記事はQrunchからの転載です。


Pythonのnamedtuple使ってますか? 案外使っていない方が多いので、ご紹介しておきます。

namedtupleとは?

通常のタプルはインデックス指定でのみ要素を参照します。一方で、NamedTupleはタプルの各要素を名前によって参照できます。
例えばpというnamedtupleの要素にnameというものがあれば、次のようにして参照できます。