python
最近グラフの可視化によく使っているPlotlyに関するちょっとしたメモです。 plotly.expressとplotly.graph_objects plotlyのスクリプト例を検索すると、 import plotly.express as px しているものと import plotly.graph_objects as go しているものの両方…
Windowsにて表題のことをするPythonスクリプトを以下に示します。 os.utime()だとファイルの更新日時、アクセス日時を更新することはできるのですが、 ファイルの作成日時は変更できないところで少し調査が必要でした。 【Python】ファイルとフォルダのタイ…
いつも忘れるのでメモ。値域が0以上255以下で、縦がheight, 横がwidthのランダム画像を生成するには np.random.randint(256, size=(height, width, 3)).astype(np.uint8) とします。以下でも同じことです。 np.random.randint(low=0, high=256, size=(height…
Pythonスクリプトを書いてflake8にかけると、インデント量や改行タイミングの微妙な違反によって E125 continuation line with same indent as next logical line E129 visually indented line with same indent as next logical line といったエラーが出ま…
2つの同型のベクトル配列a, bがあったとします。shapeは、ベクトルの次元をD、ベクトルの数をNとして(N, D)だとします。 0番目からN-1番目まで順に内積を取っていき長さNの結果を得ることを考えます。専用の命令があるのかと思ったらどうやらないようで、 ht…
Pythonの書き捨てスクリプトを書く速度を上げられるように、Pythonスクリプトのテンプレートを考えてみました。 経験上、どんなスクリプトでも以下を心がけると良いことが多いです。 コードは全部メイン関数の中に入れて、グローバル変数は許容しない 出力は…
NumPyでベクトルの長さを1に正規化するには、np.linalg.normを使います。 ベクトルの例 例えば、要素数3のベクトルの長さ(より正確には、ユークリッド距離。すなわちL2ノルム)を1に正規化するには以下のようにします。 vec = np.array([3.0, 4.0, 5.0]) un…
Python 3の random.randint() と NumPy の np.random.randint() には次のような微妙だが重大な違いがあります。 random.randint(a, b) a以上b以下の整数を1個選んで返します。以下のコードで、random.randint(3, 7)が3以上7以下の整数をランダムに生成するこ…
NumPyのブロードキャストのルールについて曖昧にしか理解していなかったので調べました。わかってしまえば簡単です。 2つのarrayの間でブロードキャストができるかどうかは、2つのarrayのshapeによってのみ決まります。アルゴリズムは以下です。 もし2つのa…
NumPyのconcatenate(), vstack(), hstack(), dstack(), stack()の違い について毎回混乱するのでまとめました。 concatenate() 複数のアレイを、既存の軸に沿って結合する関数です。 基本的に、後述するvstack(), hstack(), dstack()の上位互換がconcatenate…
scikit-imageというPythonのライブラリを使うと、サンプル画像をさっと取ってくることができます。 コード例は以下です。 import skimage print("scikit-image version: {}".format(skimage.__version__)) coffee_image = skimage.data.coffee() print(coffe…
Python 3で外部コマンドを呼ぶにはsubprocessモジュールで提供されているrun()を使うことが推奨されるのですが、毎回使い方を調べてしまっているので自分用にまとめます。順を追っていかないと引数の意味を理解しづらいところがあるので、冗長ですが簡単な例…
毎回調べてしまっているのでメモ。 import datetime now = datetime.datetime.now() print(now) で 2021-05-31 21:10:18.332820 というふうに表示できるのだけれど、個人的には秒までで十分なことが多いので、以下のようにするのが多いです。 import datetim…
Pythonのunittestをちゃんと使ったことがなかったので、使い方について調べてまとめました。Windows 10のAnaconda Python 3.8.5で動作確認しています。 もっとも小さな例 被テストコードとテストコードとを同一のスクリプトに記述した小さな例を以下に示しま…
サーバにてmatplotlibを使ってグラフを作成し、ファイルに保存することがよくあるのですが、実装するたびにググりまくって非効率なので、私が高確率で使う機能をテンプレ化しました。 さっそくコードを以下に示します。 import matplotlib import matplotlib…
PowerShellにてAnaconda Pythonの仮想環境をactivateしようとしてactivate (仮想環境名)というコマンドを実行しても何も起こりません。これを修正しようとしたときにやったことのメモです。注:私はAnaconda PythonにもPowerShellにも精通していないため、こ…
Python 3の標準ライブラリであるsqlite3を使って、SQLite と呼ばれるデータベースを触ってみるメモです。 基本 テーブルを作成 以下のコードでは、都道府県のデータを格納するprefecturesという名前のテーブルを定義します。このテーブルは、name(都道府県名…
Python 3にて以下のように例外オブジェクトをprint()するコード try: raise ValueError except Exception as e: print(e) を実行しても、以下のように何も出力されません。 結論からいうと、上記のコードを以下のように修正すると try: raise ValueError('va…
AtCoderやCodeforcesなどの競技プログラミングサイトでは、通常、標準入力から入力を受け取ります。例えばPythonで回答する場合、あなたの回答(例としてsolve.pyとします)は、入力が書かれたテキストファイルinput.txtが $ python solve.py < input.txt の…
Python3のスクリプトを数時間動かしたあとにエラーで落ちるという経験はないでしょうか。エラーが発生したら pdb と呼ばれるデバッガが起動するようにしておくと、エラーの究明に役立ちます。 例えば、以下のような script.py があったとします。 def main()…
Pythonのコード改善のためのツール5つを試してみた - minus9d's diary の中で個人的にもっともよさそうだと感じたflake8について、使い方を詳しく調べました。 インストール $ pip install flake8 バージョンとプラグインの確認 $ flake8 --version すると、…
Pythonにて長さ100000のリスト arr があるとします。このリストの末尾を削除するとき arr = arr[:-1] とする方法は非常に遅いので要注意です。arr[:-1]により新規にリストが作成されてしまうのが原因です。ついカジュアルにこのような書き方をしてしまいがち…
Pythonのコードを改善するためのツールについて一通り試してみました。各ツールのインストール方法や使い方については Pythonのスタイルガイドとそれを守るための各種Lint・解析ツール5種まとめ! - Sider Blog に詳細にまとまっているのでおすすめです。 サ…
Anaconda Pythonで提供されるNumPyはIntelのMKLを利用しているため高速だという話を聞いたことがあります。実際どの程度違いがあるのか試してみました。 環境構築 実験は、自作PCに入れたUbuntu 16.04で行いました。環境構築にはAnaconda Pythonが提供する仮…
Jupyter Notebookをどのように公開すると管理が楽かを考え中です。調査結果を以下に示します。 Github Githubのレポジトリに登録された.ipynbファイルは自動的に整形されて閲覧できます。(例:python_exercise/matplotlib_exercise.ipynb at master · minus…
例えば3.14を分数で近似するには、分子と分母をどう選べばよいでしょうか。調べてみるとなかなか奥が深い問題です。 方法1. floatのas_integer_ratio() 以下のように、as_integer_ratio()を用いることができます。 >>> (0.25).as_integer_ratio() (1, 4) こ…
Pythonで並列処理・並行処理を提供する標準モジュールは数多くあり、初めてだと違いを理解するのは困難です。この記事では、それぞれの違いについて調べました。 threadモジュール(Python 2), _threadモジュール(Python 3) かつてPython 2にはthreadモジュー…
今年の8月、PFNからGitHub - chainer/chainercv: ChainerCV: a Library for Computer Vision in Deep Learningがリリースされました。今のところ2つの物体検出手法(Faster R-CNN, SSD)と1つの画像セグメンテーション手法(SemSeg)が実装されています。example…
少し前のことですが、一年以上かかってのろのろ読んでいたFluent Python - O'Reilly Mediaをようやく読み終わりました。792ページもの厚さにもかかわらず密度が非常に濃く、どのページにも発見がある名著だと思います。オライリー公式での高評価も頷けます(…
100 numpy exercisesの解説 51~75 - minus9d’s diary の続きです。引き続き、 numpy-100/100 Numpy exercises.ipynb at master · rougier/numpy-100 · GitHub を片手にご覧ください。 76. Consider a one-dimensional array Z, build a two-dimensional arra…