python

3月1日の一日前を計算する方法

いろんな言語・コマンドラインで,日付の足し算・引き算をする方法をまとめます.例として,3月1日の1日前を計算を考えます.この計算は,うるう年があるので面倒です.たとえば 2021年3月1日の前日は 2月28日 2020年3月1日は前日は 2月29日 となりますが…

matplotlib でグラフの軸ラベルを一つにまとめる方法

matplotlibでグラフをプロットするときに、複数の軸ラベルを一つの共通の軸ラベルにまとめる方法です例えば以下のグラフには X軸にラベル(ABC)が二つありますが,これを と一つにまとめます. 方法 軸ラベルの指定は set_xlabel()を使いますが import matp…

Pythonで方程式を解く

pythonで方程式を解く方法です 一次方程式を解く 一次方程式 を について解きます import sympy x = sympy.symbols('x') eqn = sympy.Eq(5*x + 3, 0) ans = sympy.solve(eqn) print(ans) 出力は [-3/5]で,答えは です 連立一次方程式を解く 連立一次方程式 …

pandasでDataFrameの差分をハイライト表示する方法

pythonのpandas でデータの差分を確認する方法です2つのDataFrameをセル単位で比較し、値が一致しないセルをハイライト表示します import pandas as pd def style_diff(col, target=None, props=''): if col.name in target.columns: t = target[col.name] …

Pythonで簡単な構文解析器を実装する方法(pyparsing の使い方)

Pythonで構文解析を行う方法です.BNFを書いてがっつり実装する場合は Lark などを使いますが,このエントリでは簡便な方法として pyparsing モジュールの使い方を紹介します.ログファイルから特定のデータだけを抜き出す,といった用途ならpyparsingで十分…

Pythonでimportするモジュールのサーチのパスを追加する方法

Python でモジュールをimportする際のサーチパス(検索パス)を追加する方法をまとめます 検索パスの確認方法 sys.path という変数を見ると,サーチパスが確認できます import sys print(sys.path) 検索パスの追加方法 パスの追加方法は大きく2種類に分類で…

Pythonで積分を計算する

scipyの integrate モジュールを使うと定積分が簡単に計算できます spicy.integrate の使い方 例えば を計算するコードは,たったの三行です. from scipy import integrate from math import sin, pi print( integrate.quad(sin, 0, pi/2.)) 結果は数値解な…

matplotlib のフォントの設定

jupyter notebook などで matplotlib を使ってグラフをプロットするとX軸の軸ラベルやタイトルで日本語が表示できない・文字化けする場合があるその時は,日本語フォントの設定を見直すと良い 日本語フォントの設定 import matplotlib.pyplot as plt plt.rcP…

matplotlib で y=x の直線を書く方法

pythonのmatplotlib でグラフに y=x の直線を書く方法 fig, ax = plt.subplots(1,1) ax.axline((0, 0), slope=1) axlineを使って,原点(0,0)を通り傾き 1の直線を描く方法が一番使い勝手が良い

pytorchをインストールするだけでssh鍵を抜き取られる件

PyTorch にマルウェアが混入しssh鍵を抜き取れられる被害が出ているそうです pytorch.org本家サイトに,被害の有無をチェックするコードが紹介されています python3 -c "import pathlib;import importlib.util;s=importlib.util.find_spec('triton'); affect…

python で全角英数を半角英数に変換する

python で全角英数の文字を、半角英数に変換する方法です import mojimoji x = "文字列アイウエオABCDE" y = mojimoji.zen_to_han(x, kana=False) print(y) mojimoji というモジュールを使うのが楽です。kana=Trueを指定すると、全角カタカナも半角カナ…

Emacsからjupyter notebookを使う方法

Emacs からjupyter notebookを使う方法をまとめますjupyter notebookは python やRを使った開発 グラフをプロットしながらデータをこねくり回すデータサイエンス・機械学習的な作業 流行りのデープラーニング などで非常に便利ですが、これらがすべて Emacs …

python / numpy で特異値分解(SVD)を使って一般化逆行列を計算する

一般化逆行列(擬似逆行列,最小二乗法に対応するやつ)を python で計算するサンプル特異値分解(SVD)が必要なので,実装は numpy を使いますc++/eigen で実装したコード https://pyopyopyo.hatenablog.com/entry/2021/09/07/090000 のpython版になります im…

pythonで自分のIPアドレスを調べる方法

pythonでローカルのネットワークインタフェースのIPアドレスを調べる方法 def get_local_ip_address(): from socket import socket, AF_INET, SOCK_DGRAM s = socket(AF_INET, SOCK_DGRAM) try: s.connect(('10.255.255.255', 1)) ipaddr = s.getsockname()[…

jupyter notebook からソースコードだけを抽出する方法

jupyter notebook からソースコードだけを抽出する方法です2行でまとめると nbconvertを使う方法が定番.でも動作が遅い 20倍以上高速な jq を使う方法がおすすめ となります.以下,詳細です. nbconvert を使う方法 input.ipynb からpythonコードを取り出…

Jupyter Notebook をPDFで保存する方法(日本語対応)

jupyter notebook の出力は pdf 形式で保存できますその方法は,画面左上の「メニュー」の「名前を付けてダウンロード」から「PDF via LaTeX (.pdf)」を選ぶだけ.ただし,この機能が正常に動作するためには LaTeX がインストールされていること 日本語用に…

pythonでヒストグラムを正規化する

python でヒストグラムを正規化(面積を1.0にする)する方法です サンプルコード import numpy as np import matlplotlib.plt as plt data=[1,2,2,3,3,3,4,4,4,4] # 正規化されたヒストグラムを計算する hist, edges = np.histogram(data, density=True) w = e…

pythonのヒアドキュメントと変数展開

python のヒアドキュメントの使い方をメモしますついでにpython-3.6で導入された f-strings を使って変数置換も行います x=123 y="ABC" tmp = f''' x is {x}. y is {y}. x is {x}. '''[1:-1] print(tmp) ポイント f"..." と文字列の先頭に "f"を付けると変数…

Pythonで文字列をDatetime型に変換する方法

Pythonで文字列を時刻に変換する方法です 時刻を表す文字列 時刻を表す文字列にはいくつかのフォーマット(書式)がありますISO8601の例 2020-06-14T13:04:46+09:00 RFC 3339の例 2020-06-14T04:04:46.000Z 2020-06-14T04:04:46.000000Z これらは全部同じ時…

Pythonでコマンドラインツール(CUIとかCLI)を作るときのTips

PythonでCUIとかCLIを作る際のTips です.下記の内容を順に書いていきます エラー表示を見やすくする 使い方の説明 実際のコード例 コマンドライン引数の処理 使い方の説明 実際のコード例 Tips は今後も追記していく予定です(最終更新: 2020-06-13) エラー…

Python で正規表現を使うときのエラー対策

正規表現を使うときは,正規表現のエラーチェックをきちんと実装しておいたほうが安全です例外を使って実装すると次のようになります import re pattern = "^c++" prog = None try: prog = re.compile(pattern) except re.error as msg: print("error in reg…

Python でインストール済みのdebianパッケージを調べる方法

debian や ubuntu でインストール済みのdebパッケージの一覧を調べる方法です(pythonのモジュールの一覧ではなくて,linuxのdebパッケージの一覧です)コマンドラインなら $ dpkg -l 等になりますが、似たことをpythonで実装する場合は apt モジュールを使い…

jupyter notebook が起動しない時の対処方法

jupyter notebook が以下のエラーを出して起動しない場合の対処法 File "*********/.local/lib/python3.7/site-packages/tornado/netutil.py", line 174, in bind_sockets sock.bind(sockaddr) OSError: [Errno 99] Cannot assign requested address とりあ…

pipで入れたパッケージを一括更新する

python のパッケージをコマンド一行で最新版にアップデートする方法です コマンド 普段 sudo を使わずに,--user つけてpipを実行している場合 $ pip3 list --format freeze --outdated | while IFS='==' read pkg dummy; do pip3 install --user --upgrade …

PyGObjectのインストールエラーを回避する方法

pipコマンドで PyGObjectをインストールしようとすると $ pip3 install PyGObject以下のエラーが出る場合がある Package gobject-introspection-1.0 was not found in the pkg-config search path. Perhaps you should add the directory containing `gobjec…

QRコード(2次元バーコード)を生成するスクリプト・プログラムの作り方

その名も qrcode という python モジュールがあります qrcode というpythonのモジュール "qr" というコマンドラインのツール が用意されているので,簡単にQRコード(2次元バーコード)を生成するプログラムやスクリプトが実装できます インストール pip経…