Python
SQLAlchemy 1.4系と2.0系の両方において、データベース接続オブジェクトとトランザクションオブジェクト (sqlalchey.Transaction) を区別できるか調べてみた。結果、isinstance() を使ったプログラム実行時の型チェックで両者を区別することも、mypy および …
最近、身をもって学んだことの備忘録。SQLの薄いラッパーとしてSQLAlchemyを使いたいプロジェクト(後述)では以下の方針で進めるのが良いと思う。 ORMレイヤーで、クラス定義をする Coreレイヤーで、クエリー生成をする ただしテーブルオブジェクトではなく…
今日試して学んだこと。Pandasで同一データフレームを複数回to_parquetで出力すると、同一データが重複する形で出力される。なので、例えばCSVファイルをPandasでParquetデータセットとしてETLするような処理を走らせる場合には同一CSVファイルを複数回処理…
Python のグラフ描画パッケージ matplotlib のグラフが Jupyter Lab / Jupyter Notebook 上でボヤけて表示されるのが嫌だったので、それを改善する方法を調査した。 なお、ここで紹介する手法にはどれもデメリットがある。完璧を求めて変にストレスを感じる…
今日は setuptools-rust を使い、 Rust 言語で Python 拡張モジュールを勉強がてら書いてみたので記録しておく。 1.0 未到達なので、すぐに変わってしまうかもしれないけれど、 大きな流れは変わらないだろう…と期待している。 2021-11-28: setuptools-rust …
Jupyter Notebook や Jupyter Lab を使っていると、たまに古い Kernel の情報が残ってしまうことがある。 具体的な経験としては、もう使わないなと思って Julia 1.0 をアンインストールしたところ、 Julia 1.0 で IJulia をインストールしたときの情報が残っ…
Anaconda / Miniconda や pip で普通に NumPy をインストールすると、その計算は複数 CPU コアを備えた計算機でも常にシングルスレッドで実行され…ると今日まで思い込んでいた。が、実は環境変数を設定すれば NumPy はマルチスレッドで計算してくれるらしい…
意外とハマってしまったので、今日は matplotlib で横軸(X 軸)を日時にする方法を備忘録。初歩的な内容。
zsh の walters 等のプロンプトテーマは「前回実行したコマンドの成否 (exit status / return code) に応じて表示を変える」ようになっている。これは非常に良いなと思ったため bash で同じコトができないか調べてみた。
Python では input() や len() など、様々な組み込み関数を用意している。そして、これらと同じ名前で変数や関数を後から定義すると、それらを「上書き」できる。つまり、例えば input という名前の変数にファイルから読み出したデータを格納するようなコー…
Flask で HTML ではないデータを返送する場合、通常は HTML 応答に Content-Type ヘッダーを設定することになる。そのためには Response オブジェクトの mimetype プロパティや content_type プロパティに値を設定すれば良いのだけれど、これまでどちらに値…
(2019-08-14: 全面的に書き換えました) Flask アプリで動的に生成したデータ(例:RDB のクエリー結果を CSV にして返す)をダウンロードさせるような機能を実現する場合、これまでデータを一度 view 関数で完成させた後に返送するしかないと思っていた。…
Python 標準の csv パッケージ は CSV ファイルを手軽に入出力できるので重宝しているのだけれど、Windows で使うと改行コードがおかしくなることがあった。見た目的には「各行が 2 回改行されてしまう」ような状態。これを回避する簡単な方法がやっと分かっ…
Jupyter Notebookで時間のかかる機械学習やデータ解析の処理を走らせているとき、その経過状況をグラフにプロットして観察したい、ということがある。そういうとき、エポックごとに 1 からグラフ描画処理を普通に走らせると Notebook 上にグラフが「追記」さ…
ひょんな理由で tesseract の使い方を知る必要に迫られたので、簡単に調査。取り急ぎ、次の情報が得られることが目標。 認識された文字(≠単語)のテキストデータ (UTF-8) それらの位置情報(左上点の座標と幅と高さ) もちろん、プログラム的にこれらの情報…
(主に Python を対象に書いたけれど、Julia その他 map 関数とジェネレーターがある処理系すべてで通用する話) あるリストを元に、新しいリストを生成したいとする。ここで、もし結果のリストが元のリストの各要素に一対一対応するのであれば、普通に map(…
偶然気が付いたのだけれどJupyter Notebookは複数カーソル編集に対応しており、Ctrl+クリックでカーソルを追加、Alt+マウスドラッグで矩形選択ができる。これまで、複数カーソルを使った編集をしたい時にはイチイチVisual Studio Codeにコピペして編集して戻…
2018年12月20日現在、Windows上で構築したAnacondaまたはMinicondaなPython環境でOpenCVを使うには、以下の方法があるようだ。 pipコマンドでopencv-pythonをインストール pip install opencv-python condaコマンドで、conda-forgeからopencvをインストール …
Python, Cython, Numba, TensorFlowで、処理速度を比較してみた。未完成感あるけれど、いったん今日時点での結果を記録しておく。 github.com 原点を中心とした半径 1 の円の、x, y ともに正である領域(四分の一円)を考えると、その面積は ということで円…
Pythonのwithブロックの実行時間を測るユーティリティクラスStopwatchを書いた。
Anaconda の conda コマンドでは、いわゆる仮想環境を作成することで任意のバージョンの Python やパッケージの組み合わせを一つの計算機で共存させることができる。今日は、その仮想環境のファイル群を配置する標準のディレクトリを変更する方法について書…