Python関連のことを調べてみた2022年11月24日

Python関連のことを調べてみた2022年11月24日
目次

Azure CLIでのKey Vault シークレットキー作成 〜 Azure Functions(Python)でシークレットキーの取得・表示

<前提条件>
・KeyVaultは作成済み

# 手順1:Azure CLIコマンドでAzureにログイン

“`
az login
“`

# 手順2:Azure CLIコマンドでシークレットキーを作成する

“`
az keyvault secret set –vault-name “KeyVaultのコンテナ名” –name “シークレットキー名” –value “シークレット値”
“`

# 手順3:Azure CLIコマンドで作成したシークレットキーを表示

“`
az keyvault secret list –vault-name “KeyVaultのコンテナ名”
“`

“`
# 出力結果 
[
{
“attributes”: {
“created”: “〇〇”,
“enabled”: 〇〇,
“expires”: 〇〇,
“notBefore”: 〇〇,
“recoveryLevel”: “〇〇”,
“updated”: “〇〇”
},
“cont

元記事を表示

いくつかの言語での全角スペースの挙動

## 最初に

言語によって、全角スペースが混入したときの挙動が違います。

各言語によって、どのような違いがあるのだろうかと思い、簡単に調べてみました。

### Python・Javaは、検知してエラー

全角スペースが混じってるだけで、それを検知しエラーとして教えてくれました。

– Python(3.8.2)は、`SyntaxError: invalid character in identifier`と表示。
– Java(openjdk 15)は、`error: illegal character: ‘\u3000’`と表示。

Javaは文字コードまで教えてくれるので、親切ですね。

### Rubyは、変数名に扱えてしまう

Rubyでは、日本語も変数名に使うことができ、全角スペースも変数名に使えてしまいます。

“`fullwidth_space.ruby
  = “Hello, world!”
p   # “Hello, world!”
“`

上記のコードは、全角スペースに文字列を代入して出力してます。

そういうわけで、もし全角スペースが混じってもそれを検知

元記事を表示

[Django]データ作成・保存時に処理させるSignalを使う[django.dispatch.receiver]

# django.dispatch.receiver()の使い方
特定のテーブルのデータが変更されたらログ出したい時とかありますね。
簡単な例としては、商品情報を変更した場合のみログを出したいとか。
そんな時に使えるのがsignal!

https://docs.djangoproject.com/en/4.1/_modules/django/dispatch/dispatcher/

>Django includes a “signal dispatcher” which helps decoupled applications get notified when actions occur elsewhere in the framework. In a nutshell, signals allow certain senders to notify a set of receivers that some action has taken place. They’re especially useful when many pieces of code may be inter

元記事を表示

歌詞付きMIDIをMusicXMLに変換 その1: 歌詞情報の取得

# 概要
歌詞付きMIDI(XFフォーマット)をNEUTRINOに入力可能なMusicXMLに変換することを試みます。
第一歩として、まずはMIDIから歌詞情報を取得してみました。

結論だけ先に述べておくと、以下のコードで歌詞らしきものを抽出することができました。

“`Python
import mido
from mido.midifiles.midifiles import *
from mido.midifiles.midifiles import _dbg
from mido.midifiles.meta import meta_charset, _charset

class XFMidiFile(mido.MidiFile):
# override
def _load(self, infile):
if self.debug:
infile = DebugFileWrapper(infile)

with meta_charset(self.charset):
if sel

元記事を表示

VSCodeからPythonソースを対話的に実行

Jupyter Notebookでも利用しているiPythonを用いて、生のPythonソース上でも対話的に実行する機能が提供されています。

# 準備
– VScodeに拡張機能「Python」をインストール

# 実行
Pythonのサンプルソース
“`python
#%%
# セル1
print(“output 1”)

#%%
# セル2
print(“output 2”)
“`

上記ソースでは、2つのprint文それぞれの直上で、「#%%」を記述しています。
Python Interactiveでは、「#%%」の間が、Jupyter notebookでのセルにあたります。
このソースをVSCode上に入力しているとき、次のように表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/586693/97239999-edd6-dd84-5875-5a113d31796e.png)

「#%%」の上に「セルの実行」「以下を実行」「[デバッグ]セルに移動」「[1]に移動

元記事を表示

PythonでC言語の解析

# 概要
C言語をコンパイルするとき、人が記述したCソースは抽象構文木と呼ばれる中間的な表現に変換され、バイナリ形式になります。
今回は、そのC言語ソースを抽象構文木として解析できるPythonプログラムを使って遊んでみました。

# 準備
## LLVMのインストール
https://github.com/llvm/llvm-project/releases

この中の最新のバージョンを選択しましょう。
Windows版はAssetsの中に一見ないかもしれないですが、「LLVM 15.0.5」(執筆時点)でをクリックすれば、windows版のインストーラもダウンロードできます。
インストールするときに環境変数の設定をインストーラの方でやってくれるオプションを選択すれば楽です。

## Python用のパッケージをインストール
パッケージをインストールしたい環境を開き、以下コマンドを実行します。
“`
pip install libclang
“`
libclangの詳しい情報は[こちら](https://pypi.org/project/libclang/)

# Python

元記事を表示

ワンライナーじゃんけんプログラム in Python

# 入力
入力はGCP(グー、チョキ、パー)でおなしゃす

# プログラム
結論から行くスタイル

“`Python
import random; cpu=random.choice([“G”,”C”,”P”]); man=input(); print(f”{man} vs {cpu}”); gcp={‘G’:0,’C’:1,’P’:2}; result={0:”あいこ”,1:”CPUの勝ち”,2:”人の勝ち”}; print(result[(gcp[man]-gcp[cpu])%3])
“`

# 必要最低限の解説
GCPを012にそれぞれ置き換えて、(man-cpu)%3を計算するとどちらが勝者か求まります
“`
%3 勝者
GG = 0 0 あいこ
GC = -1 2 man
GP = -2 1 cpu

CG = 1 1 cpu
CC = 0 0 あいこ
CP = -1 2 man

PG = 2 2 man
PC = 1 1 cpu
PP = 0 0 あいこ
“`
余り2のときにmanが勝利
余り1のと

元記事を表示

ベイズ統計学 貰ったチョコは本命チョコ??

ベイズの定理を使ってバレンタインに貰ったチョコは本命かどうかの確率を出します。

まず今分かっている情報を整理します。

バレンタインチョコをA子さんにもらっている。

A子さんが私を好きな確率は70%である

A子さんが私を好きでない確率は30%である

尤度 好きだからチョコを渡した0.65

尤度 好きだだけどチョコを渡さない0.35

尤度 好きではないがチョコを渡した0.5

尤度 好きではないのでチョコを渡さなかった0.5

2番と3番は事前確率といい自分の主観できめる

4,5,6,7は尤度といいます。

深く考えずバレンタインの尤度はこの数値で決まっていると思ってください。

ここから計算式にしていきます

尤度 好きだからチョコを渡した 0.7 * 0.65 = 0.455

尤度 好きだだけどチョコを渡さない 0.7 * 0.35 = 0.245

尤度 好きではないがチョコを渡した 0.3 * 0.5 = 0.15

尤度 好きではないのでチョコを渡さなかった 0.3 * 0.5 = 0.15

今回はチョコをもらっているので1,3で計算します。

式は 0.45

元記事を表示

ゼロから作るLouvain法

# Louvain Clustering

Louvain法はグラフクラスタリングの一種であり、ある程度の大きさのグラフを高速に分割できることから広く用いられてきた。生命科学分野ではsingle-cell seqなどの高次元データの可視化にUMAP、クラスタリングにLouvain ClusteringやLeiden Clusteringなどが用いられてきた。

グラフクラスタリングの変遷については以下に詳しい。

[塩川 浩昭. “⼤規模グラフデータ分析⼊⾨” 第8回「学際計算科学による新たな知の発⾒・統合・創出」シンポジウム. 筑波⼤学 計算科学研究センター. 2016.](https://www.ccs.tsukuba.ac.jp/wp-content/uploads/sites/14/2016/10//shiokawa.pdf)

現在広く用いられているグラフクラスタリングの基礎となったLouvain Clusteringについてゼロから作り、理解を目指す。

## Modularity

[Newman, Mark EJ. “Fast algorithm for detecti

元記事を表示

PythonデコレータのSyntactic Sugarなぜ便利かを理解した

Pythonデコレータを利用する場合、`@decorator`というSyntactic Sugarを関数やメソッドの先頭に付けるのが一般的ですが、なぜ便利なのかいまいち理解できていないので、調べてみました。

デコレータの詳細は公式ドキュメントあるいは他の方がすでに紹介されているので、本記事では割愛します。ちなみにおすすめの記事はこちらです。

https://rednafi.github.io/digressions/python/2020/05/13/python-decorators

まず適当に文字列の両側に``を追加してくれる簡単なデコレータを書きましょう。`num_b`は片方に追加する``の数を表しており、デフォルトは1となっています。

“`python
from functools import partial, wraps

class Emphasis:
def __init__(self) -> None:
pass

def add_b(self, func=None, num_b=1):
if f

昔のモデルだけど意外といいよ、癖のない超解像

# 変なアーティファクトがあまり入らない超解像
RealESRGANも強力だけれど、平滑化が強すぎて細部が潰れてしまったり、他のモデルもクッキリはするけれど、アーティファクトが入ってしまったりします。

# RDNは癖がない
なるべくシンプルに、しかししっかり超解像はする、そんな要望に比較的答えていると僕が個人的に思うモデルがRDNです。

↓超解像

https://github.com/idealo/image-super-resolution

# 使い方

インストール

MkDocsで簡単サイト作成

# はじめに
簡単に共有用のサイトを作りたいけど、htmlやcss,jsを書くのはめんどくさいし、Markdownでちゃちゃっと書いてそれなりの見た目で公開できないかな。と思いませんか?

MkDocs(+ Material for MkDocs)で可能だったのでまとめます。

https://www.mkdocs.org

https://squidfunk.github.io/mkdocs-material/

# デモサイト

https://ppspps824.github.io/mkdocs_sample/

# 導入

“`bash:bash
pip install mkdocs
pip install mkdocs-material
“`

# 新しいPJを作成

“`bash:bash
mkdocs new .
“`

以下のような感じになります。

“`bash:フォルダ構成
.
├─ docs/
│ └─ index.md
└─ mkdocs.yml
“`

# 設定
下記のように記載するとマテリアルテーマを利用できます。
“`yml:mkdoc

Googlecolabを用いて気になるあの人が朝型か夜型か機械学習で予測させてみた

# はじめに

私はお仕事で、顧客(お医者さん)にメールを送ることがあるのですが、

「あれ、この医師は朝型なのか、夜型なのか・・?
どのタイミングでメール送ったらより開封してくれるのだろうか・・」

と悩むことがあります。

ということで、
事前情報をもとに、気になるあの人が朝型か夜型か機械学習を用いて予測してみました!

# 事前準備

### 表形式であらかじめわかっている18名の情報をcsvファイル化

日本語で入力していたら途中でエラーが起きたので、今回は数字に直しました。。

 性別 1=女 2=男       
診療科 1=内科 2=外科

![morningornightimage.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2866856/aa305ca5-e6b3-f10d-a2de-c27b23e8bcdd.png)

これをもとに、機械に傾向をつかませます。

# Googlecolabを使用し、コード入力

①まずはマウント

“`
from google.c

【Ubuntu】【倒立振子】Windowsで設計されているデバイスドライバを、Ubuntuで使えるようにする

# 以前までの記事

MCUXpressoを使ってファームウェアの移植

https://qiita.com/belre/items/9512379324b6c2699cc7

Ubuntu環境でファームウェアを開発出来る環境の整備

https://qiita.com/belre/items/ac9eeae49ee74fbe2692

# 目標

– udevの新しいドライバとして、オリジナルのビュートバランサー2のドライバの一部機能を設計する

## 参考サイト

RTL2832uを使った例
ここから参考に、いかにリバースエンジニアリングしていくかの方針を決める

https://um6ra1.blog.fc2.com/blog-entry-9.html

# Windows環境によるリバースエンジニアリング

## CUIツールの配布元

https://www.vstone.co.jp/products/beauto_balancer_2/download.html

バランサー2SDKをダウンロードし、
Visual Studio C++を実行できる環境でソリューションを開

【VSCode】インストールしたライブラリが could not be resolved となった場合の対処法

# 事象
pythonで`matplotlib`をimportしようとしたら、`could not be resolved`という警告が表示された
なお、`matplotlib`は既にインストール済みであり、プログラムは問題なく動作する

# 環境

| 項目 | 情報 |
| —- | —- |
| OS | Windows 10 |
| Python | 3.9.13 |
| VSCode | 1.73.1 |

# 原因
VSCodeが`matplotlib`を見つけることができていない

# 対処方法
以下サイトを参考に以下二つの対応を実施

https://startlab.jp/learning-python/vscode-settings/

## 1. ライブラリがインストールされている場所を調べる
### 入力
“`
pip show matplotlib
“`

### 出力
“`
Name: matplotlib
Version: 3.6.2
Summary: Python plotting package
Home-page: https://ma

風データをmatplotlibで描画する

数値解析や観測によって得られた風データをmatplotlibで表示する時のメモです.

## 矢羽根表示
`plt.barbs(X, Y, U, V)`を使う.
`X`:矢羽根を表示するx座標
`Y`:矢羽根を表示するy座標
`U`:東西風速
`V`:南北風速

その他の引数,
– `barb_increments=dict(half=1, full=5, flag=10)`
短い矢羽根,長い矢羽根,旗を描くのに用いる値を設定できる(デフォルトは5,10,50).

– `sizes=dict(emptybarb=0)`
矢羽根同士の間隔(`spaceing`),矢羽根の根元から先端までの高さ(`height`),旗の幅(`width`),一番短い矢羽根よりも小さい値の表示に使われる円の半径(`emtybarb`)を設定できる.
`emptybarb=0`で風速が小さいものは表示させないようにできる.

“`python:In
import matplotlib.pyplot as plt
import numpy as np

U = np.array([0, -3, -5, 13

複数 List 作成時 for 一回 append より、内包表記で複数 for のほうが速いんだ

# はじめに

ちわ

久々に Python を触って、ほえ~そっちが早いんだ、となったので久々に記事に

# 環境

[Paiza.io](https://paiza.io/ja/projects/new) の Python3 で確認

# やりたいこと

以下のクラスのリストがあったとして、インスタンス変数ごと(a, b) ごとのリストを作成したい
クラスの数はとりあえず 1 万で

“`python
from random import random

class Klass:
def __init__(self):
self.a = random()
self.b = random()

klasses = [Klass() for _ in range(10_000)]

# a_list => [klasses[0].a, klasses[1].a, klasses[2].a, …]
# b_list => [klasses[0].b, klasses[1].b, klasses[2].b, …]

【Python】Pythonの主な組み込み関数31個について、全て例を交えて解説する

# 始めに

[こちら](https://www.amazon.co.jp/Python%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E5%AE%8C%E5%85%A8%E5%85%A5%E9%96%80-%EF%BD%9E%E3%83%8E%E3%83%B3%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9E%E3%83%BC%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE%E5%AE%9F%E5%8B%99%E5%8A%B9%E7%8E%87%E5%8C%96%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88-%E9%AB%98%E6%A9%8B-%E5%AE%A3%E6%88%90-ebook/dp/B09B6YFVZ4)の参考書でPythonを勉強しています。
Chapter6第2部に組み込み関数が大量に紹介されていたので、触ってみるついでに紹介していきます!

# 紹介!

ではどうぞ!
マイルールで見出しレベル

第4回: Google Maps Platform, Directions APIによる地点間情報取得(巡回セールスマン問題への下準備)

– 東京都、大阪府、名古屋県、福岡県、広島県、香川県の6都市間の距離、移動時間をGoogle MapsからDiretions APIを用いて取得する。
– また、各都市の座標はgeocoderを用いて取得する。
– これは、アニーリングを用いた巡回セールスマン問題を解くための下準備。

**前回**:[第3回: アニーリング基礎3. クラスタリング問題、2次元スピンの1次元化](https://qiita.com/opt_d/items/38830f0360af4db17484)
**参考**:[Pythonで地名から住所と座標を割り出すジオコーディングを試してみる](https://medium.com/shimakaze-soft-techblog/python%E3%81%A7%E5%9C%B0%E5%90%8D%E3%81%8B%E3%82%89%E4%BD%8F%E6%89%80%E3%81%A8%E5%BA%A7%E6%A8%99%E3%82%92%E5%89%B2%E3%82%8A%E5%87%BA%E3%81%99%E3%82%B8%E3%82%AA%E3%82%B3%

【Windows】Pythonで「findfont: Font family ‘IPAexGothic’ not found.」が表示された際の対処法

# 事象
pythonで`matplotlib`を使用してグラフを表示しようとしたら以下のメッセージが出力された
“`
findfont: Font family ‘IPAexGothic’ not found.
“`

# 環境

| 項目 | 情報 |
| —- | —- |
| OS | Windows 10 |
| Python | 3.9.13 |
| matplotlib | 3.6.2 |

# 原因
IPAexゴシックがインストールされていない

# 対処方法
以下3つの手順を実施
## 1. フォントのダウンロード
フォントを以下サイトからダウンロード

https://moji.or.jp/ipafont/ipaex00401/

IPAexゴシックが入っているzipファイルをダウンロードしてください。

## 2. フォントのインストール
ダウンロードしたzipファイルを解凍して、「ipaexg.ttf」ファイルをダブルクリックして、インストールボタンをクリック

↓こんな画面が表示されるはず
![image.png](https://qiita-im