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

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

【GradCAM】ResNetで学習させた都市景観画像の判断根拠

# 概要

私事で恐縮ながら、社会人になって一人暮らしを始めました。
今住んでいるのは都心の近くなのですが、実家は郊外なので、それぞれの景観は異なってきます。路地を歩いているとなんとなく街並みが○○区っぽいな、とか、ここは○○市らしいなとか、感じたことがある方も多いと思います。
とはいえ、その差は結構微々たるもので、その市区町村にあるな”雰囲気”の差のようなものがある気がします。
今回は東京都の町田市と中央区の画像を教師あり学習で識別モデルを学習し、GradCAMを用いて判断根拠が何なのか確認してみます。
モデルには定番のResNetを用います。

実装や詳細は下記のサイト(M3 Tech Blog様)を参考にさせていただきました。
[機械学習で逆ストリートビューを作り、写真から港区らしさを判定する](https://www.m3tech.blog/entry/photo2geo)

ご指摘・疑問などございましたらコメントよろしくお願いいたします。

# 学習
![図形 (1).jpg](https://qiita-image-store.s3.ap-northeast-1.amazo

元記事を表示

コマンドラインから入力した数値が3で割り切れるか教えてくれるプログラム(Python)

コマンドラインから入力した数値が3で割り切れるか教えてくれるプログラムをPython言語で紹介します。

以下ソースコードです。

“`python
text = input()
data = 0

for s in text:
data += int(s)

if data%3 == 0: print(“3で割り切れます!”)
if data%3 != 0: print(“3で割り切れません!”)
“`

実行結果

“`
3
3で割り切れます!

333333333333333333333333333333333333333333333333333
3で割り切れます!

12
3で割り切れます!

14
3で割り切れません!

18
3で割り切れます!

300000000000000000000
3で割り切れます!

30000000000000000000000000000000000000001
3で割り切れません!

3000000000000000000000000000000000003
3で割り切れます!

19238902138902180321380

元記事を表示

Eigensystem Realization Algorithm(ERA) によるシステム同定の理論と実装

# 概要
構造ヘルスモニタリングなどにおけるシステム同定の手法として用いられる、Eigensystem Realization Algorithm(ERA) の理論と実装例について整理する。

# Eigensystem Realization Algorithm(ERA) とは
加速度センサ等で計測した構造物の振動データから、**構造物のパラメータを同定するシステム同定の手法**である。得られた固有振動数、モード減衰比、モード形は、[構造ヘルスモニタリング](http://www.nilim.go.jp/lab/ieg/tasedai/shiryou/100223_2_4_4.pdf)などにおいて構造特性の変化を分析する上で利用される。

**ERAでは自由振動波形を利用する。** 自由振動を直接計測することが難しい場合も多いため、ランダム応答から自由振動波形を抽出する手法である **Natural Excitation Technique(NExT)** と併せて利用されることが多い。

# ERAの理論
離散時間線形システムとして、次のような状態空間モデルを対象とする。

“`

元記事を表示

非エンジニアOLのPython忘備録的ブログ

初めに
この記事ではmacbook airにインストールしたpython3.9.7を使っています
今回はこんな感じのアプリをYoutubeで見て作り類似したものを自作しました。
参考にしたのはこちらです。

その手順をコードの解説とともに忘備録的に載せておきます。

・注文ボタン押す前
![BBDDFF52-5E82-4EF0-B4C6-CC24C32C88EB_4_5005_c.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/992222/aabc1617-e93a-aa68-2627-38bb245d7a0c.jpeg)
・個数選択して注文ボタン押した後

コードは以下の通りです。
![CBD208CB-8A84-4000-A70C-2AD50F4009EB_4_5005_c.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/9922

元記事を表示

[Python]Seleniumでスマホ表示をエミュレートする

# 概要
Seleniumにおいて、モバイル端末の表示をエミュレートするための方法のメモです。
[Chrome DevTools Protocol](https://chromedevtools.github.io/devtools-protocol/)(CDP)の機能を使って、画面サイズとユーザエージェントの変更を行います。実機の完全な再現とはなりませんが、おおよその表示の目安にはなると思います。

## 環境
– Windows 10
– Python 3.10.4
– Selenium 4.1.3
– Chrome 101.0.4951.41

# コード
“`python:emulate-mobile.py
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
import os
import time

with webdriver.Chrome(

元記事を表示

Poooli L3 感熱紙プリンタへの Python からの出力 備忘録

# 要旨

Poooli L3 プリンタをクロスプラットフォームで利用できるように、Python の socket を用いて Bluetooth を利用し画像ファイルを出力する。Windows/Linux で 2 階調 bitmap 出力と、6 階調のグレースケール bitmap 出力が出来た。Mac OS12 からは socket が利用できなかった。Bluetooth LE ライブラリ Bleak の利用を試み Phomemo M02S からの出力ができた。

# 前置き

先日の記事で、Linux Ubuntu から Bluetooth を tty に結び付る方法で、Fortran から出力を行った。

https://qiita.com/cure_honey/items/dff6ac380de15aee31bf

しかしこの方法は Windows や Mac では利用することが出来ないので、クロスプラットフォームで動作するように、Python を利用することを試みた。

まず初めに Phomemo 社の感熱プリンタ(ESC/POS 2 階調 bitmap)に対して github

元記事を表示

emacs lsp-mode pythonの設定備忘録

emacsでの設定を触り始めて1年くらい経つが、python環境にすごく悩まされていた。そこでlsp-modeというものを見つけ、手こずりながらもうまくいったので備忘録として取っておく

特にmako さん https://mako-note.com/ja/python-emacs-lsp/
が大変参考になり、助かりました。

## 1. 環境
m1 pro 2021
Mac OS monterey 12.3.1
lsp-mode
pyright

## 2. pyright
https://mako-note.com/ja/install-node14-on-m1-mac/
を参考にインストール

初めにnode.jsが必要なのでインストールする

~~~terminal:terminal
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
~~~

そうすると .zshrcにnvmの環境pathがインストールされるので以下を追記

~~~el:.zshrc
export NV

元記事を表示

seleniumを利用してGoogle認証を通す方法

## やりたいこと
Googleアカウントで認証されるサイトにログインしたい。

■実行環境
 jupyter notebook(Chromeで実行)
■言語 
 python
■ライブラリ
 selenium

## ぶちあたった壁①
下記のコードでchromeが起動され、Googleのアカウント入力画面が表示されるところ
まではいいのですが、入力後「ログインできませんでした」メッセージが表示されます。
機械による操作と判断されたときのGoogle側の対処のようです。

“`python:
from selenium import webdriver
browser = webdriver.Chrome(r’C:\Users\[ユーザ名]\chromedriver.exe’)
browser.get([目的のURL])
“`

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/998522/3a5ca118-6f18-4080-a317-1e347b40edc4.png)

## ぶち

元記事を表示

tkinter(Tcl/Tk)をさわってみる

[Windows端末にVS CodeでPython開発環境を用意してみる](https://qiita.com/SAITO_Keita/items/ddcde4fdcdf5e5eaa933)の記事でPython開発環境の構築をしました。

この時に、インストールオプションで`tcl/tk`がデフォルトでチェックが入っていました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/fa8c2de1-eca3-c34f-31a1-469921ef8373.png)

今回はこの`Tcl/Tk`を利用するために、Windows端末で`tkinter`のチュートリアルにあるhellworldプログラムを実行してみます。

## そもそもTcl/Tkって?

[Tcl/Tk](https://www.tcl.tk/)
[About Tcl/Tk](https://www.tcl.tk/about/)
[Hisotry Tcl/Tk](https://www.tcl.tk/about/

元記事を表示

MacOSXでOpenCVをビルドしてStructure From Motionを試す

# はじめに
PythonからOpenCVを使ってStructure From Motionを試すための環境構築手順です。
OpenCVのcontribには`sfm`モジュールが含まれていますが、`pip`や`conda`でinstallできるビルド済みの`opencv-contrib-python`パッケージには`sfm`モジュールが含まれてないようです(多分)。
そこでcontribを含めて、ソースからビルドを行います。

# 参考
– [OpenCV — Installation in MacOS](https://docs.opencv.org/3.4/d0/db2/tutorial_macos_install.html)
– [SFM module installation](https://docs.opencv.org/4.x/db/db8/tutorial_sfm_installation.html)
– [Compiling OpenCV with Structure From Motion module Python bindings](https://bksp

元記事を表示

Pythonでデータをテキストファイルに入出力するとき

# はじめに
pythonで外部のデータを読み込むとか外部に出力するとかの書き方が一生覚えられず,毎回調べているので,自分用にまとめる.

# numpyでデータを保存するとき
gnuplotなどでグラフを書くときにデータをテキストファイルで出力する必要があるので,numpyでのやり方を記す.

“`
data = np.array([1,2])
np.savetxt(‘data.txt’, data)
“`

ついでにリストからnumpyに変換する方法も必要だと思うので書いておく.
“`
list = [1,2,3]
np_list = np.array(list)
“`

numpyの転置は次の通り.
“`
list = [[1,2]
,[3,4]]
list_T = list.T

>list_T
>[[1,3]
[2,4]]
“`
以降,またなにか必要になったら追記する.

元記事を表示

Python入門〜よく使う文法〜

# はじめに

自分の備忘録用。

# 環境

– Python3.9

# 変数

変数について

## 命名規則

– 変数名、関数名
– スネークケース(例:my_name)
– クラス名
– パスカルケース(例:SampleClass)

## 変数宣言

Pythonの場合には利用する前に変数宣言は必要ない。
そのため、使いたいタイミングでいきなり代入する。
代入した値によって動的に変数の型が決まる。

文字列を代入した場合
“`python
value = “あいうえお”
type(value)

# 出力結果

“`

数値を代入した場合
“`python
value = 10
type(value)

# 出力結果

“`

## 文字列型(str)

“`python
value = “あいうえお”
type(value)

# 出力結果

“`

プレイスホルダーを使ってフォーマットする

“`python
value = “{}です”.format

元記事を表示

[学習メモ]pytorchの基本5(CNN)

[最短コースでわかる PyTorch &深層学習プログラミング](https://qiita.com/makaishi2/items/2c40fe43c01b35acb8c4)の[CNNによる画像認識](https://colab.research.google.com/github/makaishi2/pytorch_book_info/blob/main/notebooks/ch09_cnn.ipynb)より

## nn.Conv2dとnn.MaxPool2d
畳み込み関数とプーリング関数の定義の例

“`python
conv = nn.Conv2d(3, 32, 3)
maxpool = nn.MaxPool2d((2,2))
“`
畳み込み関数はnn.Conv2dというレイヤー関数で実現されている。第1引数は`入力チャンネル数`、第2引数は`出力チャンネル数`、第3引数はフィルターとなる小さな正方形(カーネル)の1辺の画素数を意味する`カーネルサイズ`を指定している。
プーリング関数はnn.MaxPool2dというレイヤー関数で実現されている。引数の(2,2)は、それ

元記事を表示

スマホに保存しているTwitterの下書きをテキストデータとして取り出す方法を思いつきました

# はじめに
**恥ずかしながら私、Twitterの下書きが800件ほどたまっています。**

私は1日数ツイートをするかしないかくらいのライトなツイッターユーザーなのですが、ツイート内容を書いたあとすぐには呟かずに一度下書きに保存する癖があります。これはその場のノリでツイートしてしまったり、誤った情報を発信してしまうのを防ぐには有効なのですが、デメリットもあります。下書きがどんどん溜まってしまうのです。下書きを書いたまま結局呟かずじまいのツイートも多く、気付けば「下書き」欄をいくらスクロールしても下までたどり着かないほどになってしまいました。

Twitterの下書きはスマホなどのデバイスに保存されてデバイス間では共有されず、例えばスマホを新しくした時などに下書きの履歴を引き継ぐことができません。デバイスに保存されているデータを取り出せないかと試みたことはありましたが、どこにデータが保存されているのか見つけることができませんでした。

例えツイートしなくても、下書きには過去の自分がどのようなことを考えていたのか、どんな出来事があったのかなど、**自分に関する履歴が詰まった貴重な情報*

元記事を表示

AWS Lambdaで列車運行情報をLINEへ通知【Python】

# 背景

この記事の処理内容を、スクレイピングからAPIでの情報取得へ変更したことを紹介します。
?

https://qiita.com/_whitecat_22/items/1fc804847dce27d5fb94

# 1.環境

– Python 3.9.x
– AWS Lambda
– Amazon EventBridge …定期的に実行するため
– Amazon Simple Notification Service (SNS) …終了通知をCloudWatchへ渡すため
– Amazon CloudWatch …ロギング
– Amazon Simple Storage Service (S3) …Lambda関数のアップロード先
– [LINE公式アカウント](https://www.linebiz.com/jp/service/line-official-account/)

# 2.開発

## 2.1.Pythonコード

– スクレイピングの処理を、公共交通オープンデータセンター 開発者サイトから登録すると利用可能なAPIへ変更しました。
※ユ

元記事を表示

SQLite3のデータベースをMySQLに移行するときに文字コード(照合順序)でハマった話

# はじめに
こんにちは~。さきやです。

今回は、DjangoのSQLite3データベースをMySQLサーバーに移行する作業で1日くらいハマりました。
原因は文字コードの照合順序だったんですが、意外なところに落とし穴がありました。

初投稿なので、読みにくいところもあるかもですがご了承下さい。
それでは本編どうぞ

# 環境
Windows(Ubuntu 20.04)
Docker 4.20
Django 3.2
MySQL 8系

※今回はDockerの環境は関係ありませんが、参考までに載せています!

# 経緯
データベースを移行する際、Django で下記のようなコマンドをよく実行しますよね。

“`
#1. 現在のデータベースを json 形式のファイルで出力する (-eオプションなどをつけてエラー回避することが多いですが、詳しい説明は割愛します。)
python manage.py dumpdata > dump.json
“`

“`
#2. 1で出力した dump.json を他のデータベースに読み込ませる
python manage.py loaddata du

元記事を表示

pythonによるStandard受験編254

問題254

“`math
p,qを定数としてp≠0とする\\
関数f(x)=px^3-qx+p
はx=αで極大値αを持つとする。\\
このときαの値

を求めよ。
そのときのqをpで表せ

“`

“`
import sympy
α,x,p,q= symbols(‘α x p q’)
f=p*x*x*x – q*x+p
fa=f.subs(x,α)-q
fa
“`

“`
f1=sympy.diff(f, x)
expr1=f1.subs(x, α)#
expr1
“`

“`
solve([expr1, fa],[q,α])
“`

257

]

“`
import sympy as sp
x,t= sp.symbols(‘x t’)

f=(x-1)*(x-1)*(x+1)*(x+1)
f1=sympy.diff(f, x)
katamuki=f1.subs(x,t)

yy=katamuki*(x-t)-f.subs(x,t)
sp.expand(yy)

“`

“`

ans=sp.solve(f1,x)
for xx in

元記事を表示

pipでpygmtをインストール

# はじめに
PyGMTはanaconda環境で使うことが推奨されているが、pipでもインストールすることができる。
しかし、pipでインストールしたのみでは、エラーが発生するのでその解決方法を解説する。
# インストール環境
– Ubuntu 22.04
– Python 3.10
– GMT 6.3.0(aptでインストール)
# pipでインストール
[ドキュメント](https://www.pygmt.org/v0.4.0/install.html#using-pip)にある通りに実行する。
“`bash
pip3 install pygmt
“`
:::note warn
記事執筆時(2022/5/3)ではPyGMT 0.6.1がインストールされた。PyGMTはバージョンにより、対応するPythonとGMTのバージョンが異なるので、注意すること。([リンク](https://www.pygmt.org/v0.6.1/index.html#compatibility-with-gmt-python-numpy-versions))
:::

PyGMTをimportするとエ

元記事を表示

docstringのテンプレートを出力してくれるautoDocstringのVS Code拡張が素敵だった

Pythonの関数(メソッド)の内容に合わせてdocstringのテンプレートを生成してくれるautoDocstringというVS Codeの拡張機能をお仕事とプライベートで使っていたら結構気に入ったのでその紹介です。

# autoDocstringでできること

– Pythonの関数やメソッドの引数名や型アノテーションなどに応じたdocstringのテンプレートをVS Code上で生成してくれます。
– ※JSDoc的なもの含め、他の言語だと割とその辺をしっかり生成してくれる一方でPythonだと(出力されるdocstringのスタイルがずれていたりなど)個人的にしっくりくるものが無く、今まではスニペット的にクリップボードへ定型文登録などして過ごしていました。
– PEP257やGoogleスタイル、NumPyスタイルなどメジャー所のdocstringのスタイルはサポートされています。

※そもそもdocstringとはなんぞや・・・という方は必要に応じて以下の記事などをご確認ください。

https://qiita.com/simonritchie/items/49e081

元記事を表示

完全数、過剰数、不足数について

# 完全数について

完全数とはある数の約数を足し合わせた数がその数になる数の事である。
ただし、その数自身は足し合わせない。

例えば、6は完全数である。
6の約数は1,2,3,6であるが6を除いた数を足し合わせると1+2+3=6になる。
この数を完全数という。

最も小さな完全数は6である。 完全数は6、28、496、8128、33550336、8589869056、……と続くが、1万以下の完全数は8128までの4つしかない。 これまでに完全数は51個見つかっている。 2018年に見つかった51番目の完全数は4900万桁以上もある。

中世の『聖書』の研究者は、「6 は『神が世界を創造した(天地創造)6日間』、28 は『月の公転周期』で、これら2つの数は地上と天界における神の完全性を象徴している」と考えたとされる。

古代ギリシアの数学者は他にもあと2つの完全数 (496, 8128) を知っていた。以来、完全数はどれだけあるのかの探求が2500年以上のちの現在まで続けられている。

6 と 28 がなぜ「完全」であるかは中世の学者の議論の対象になり、6 は神が創造した1週間(日曜

元記事を表示

OTHERカテゴリの最新記事