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

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

matplotlib 3次元グラフ(アスペクト比調整と多角形塗りつぶし)

## はじめに
格子桁解析を行っているのだが、結果の断面力図は3次元で表示する必要がある。これまで3次元描画はGMT(Generic Mapping Tools)を使っていたのだが、なんとかPythonでやってみたい。
Pythonで3次元描画を行う上での問題点は、「各軸の縮尺(アスペクト比)を合わせること」および、「多角形(ポリゴン)の着色」であったが、一応これらを思ったとおりに実行できるようになったので、基本的なところを紹介しておく。なお、この原稿の下書きは、最近使い出したメモアプリ(マークダウンエディタ) Obsidian で行っている。なかなかいいですぞ。

環境は以下の通り。

+ macOS Monterey
+ Python 3.9.7
+ matplotlib 3.4.3

参考サイトを以下に示しておく。

[アスペクト比関係](https://sabopy.com/py/matplotlib_3d_18/#toc8)
[3Dポリゴン関係(1)](https://stackoverflow.com/questions/4622057/plotting-3d-polygo

元記事を表示

【Project Euler】Problem 15: 格子状の道

* 本記事は[ProjectEuler](https://projecteuler.net/about)の「100番以下の問題の説明は記載可能」という規定に基づいて回答のヒントが書かれていますので、自分である程度考えてみてから読まれることをお勧めします。

### 問題 15. 格子状の道

原文 [Problem 15: Lattice paths](https://projecteuler.net/problem=15)

**問題の要約:20 x 20の格子状の道を左上から右下まで行くルートは何通りあるか求めよ**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1922159/0d7ec1c6-66e7-83cf-7165-3665fe3a7059.png)

各格子点に入る道は、上からと左からの2つで、それぞれの前の格子点までのルートの数を足せばよいので、[パスカルの三角形(Wikipedia)](https://ja.wikipedia.org/wiki/%E3%83%91%E

元記事を表示

【Project Euler】Problem 14: 最長のコラッツ数列

* 本記事は[ProjectEuler](https://projecteuler.net/about)の「100番以下の問題の説明は記載可能」という規定に基づいて回答のヒントが書かれていますので、自分である程度考えてみてから読まれることをお勧めします。

### 問題 14. 最長のコラッツ数列

原文 [Problem 14: Longest Collatz sequence](https://projecteuler.net/problem=14)

**問題の要約: $N<10^6$ で最長のコラッツ数列となる開始の数を求めよ** 昨年朝日新聞にも「[「コラッツ予想」証明できたら1億2000万円](https://www.asahi.com/articles/DA3S15089454.html)」で紹介されたコラッツ数列の問題ですね。定義は[コラッツの問題(Wikipedia)](https://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%A9%E3%83%83%E3%83%84%E3%81%AE%E5%95%8F%E9%A1%8C)に詳細があ

元記事を表示

【Project Euler】Problem 13: 大きな数の合計

* 本記事は[ProjectEuler](https://projecteuler.net/about)の「100番以下の問題の説明は記載可能」という規定に基づいて回答のヒントが書かれていますので、自分である程度考えてみてから読まれることをお勧めします。

### 問題 13.大きな数の合計

原文 [Problem 13: Large sum](https://projecteuler.net/problem=13)

**問題の要約:100個の50桁の数の合計の最初の10桁を求めよ**

これもPythonのように桁数制限がないと簡単ですね。

“`Python
print(f”Answer : {str(sum((list(map(int,list(ln.split()))))))[:10]}”)
“`

“`python
ln = “37107287533902102798797998220837590246510135740250 “\
“46376937677490009712648124896970078050417018260538 “\
“74324986199

元記事を表示

python:tkinterとsqlite3でSQLの勉強

#目的
①実業務でSQLを使う機会が増えたのでsqlite3を触って、SQLの理解を深める。
②tkinterも絡ませて、SQLを使ったアプリっぽいものを作成した!という充実感も得る。

#概要
①データベースの作成
→BeautifulSoupとsqlite3を使って事前に作成済み
 (あるスマホゲームのサポートカード一覧データ)
②tkinterでGUIアプリケーションの作成
・sqlite3でDBにSQLのSELECT命令を送り、その結果を表示する
・文字だけでなく、SQL結果と別途画像データ名を同じにしておき、一緒に画像も表示する
③成果物イメージ
![screen 6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698556/6e77ce8b-7af8-cad6-6c48-e1f144f40996.png)

#コード

“`python:使用モジュール
import tkinter #GUIで使用
import sqlite3 #データベースをSQL実行
“`

“`python

元記事を表示

django_restframework X vscodeでAPIドキュメントを自動作成する

# 目的
django_restframeworkでAPIを作成していたが、APIはバックエンドとフロントエンドのインターフェースであり、**フロント担当者が自分が作成したAPIをどのように扱えば良いのかすぐにわかるような状態にしなければそれはまともなAPIとは言えないのではないか。**

と思い、簡単なものにはなるが、下の画像のようなAPIのドキュメントを作ってみることにした。
![スクリーンショット 2021-12-26 午後0.58.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/487834/049e75cd-bfe1-c798-13b8-d21fe5a9913c.png)

# 概要
**DjangoRestframeworkにはAPIの定義書を(urls.pyから?)自動で作成してくれる素晴らしすぎる機能がある。**

このAPI定義書があることによって開発担当者以外のエンジニアもAPIを簡単に利用することができるようになるのでとても大事。

正直手順自体は本当にびっくりするくらい簡単

元記事を表示

機会学習モデルが変数同士の和や積の相互作用を認識するか

#はじめに
自分用です. なんとなく気になったので.

それぞれの機械学習モデルが変数同士の和と積を認識できるか調べました.
線形回帰, サポートベクターマシン, 決定木, ランダムフォレスト, 全結合ニューラルネットワーク, LightGBMについて調べました.

雰囲気でゆるくやったのでハイパーパラメータ設定には特に力を入れていませんし, 厳密さは欠けているかもしれません.

#データセット
a, b: -50から50のランダムな整数値(ExcelのRANDBETWEEN関数を使用)
a+b: aとbの和
a*b: aとbの積

||a|b|a+b|a*b|
|:|:—-|—–|—-|—–:|
|0|37 |46 |83 |1702 |
|1|-30 |35 |5 |-1050 |
|2|-19 |46 |27 |-874 |
|3|14 |26 |40 |364 |
|4|3 |-10 |-7 |-30 |

3000行あります.

#各機械学習モデルにおける実験

訓練データとテストデータに分

元記事を表示

Raspberry Pi とサーボモータ (MG90S) で自動猫じゃらしを作る

# はじめに

Raspberry Pi に MG90S と言うサーボモータを繋げて動かしてみます。

モーターと一口に言っても世の中には[いっぱいある](https://deviceplus.jp/hobby/motor-type/)ようです。ミニ四駆で使われている電流を流すと単純にブン回るブラシ付きDCモータを回すのも楽しいですが、ステッピングモータや今回扱うサーボモータでは回転の速さや向きなどをプログラムからより細かく制御することができます。

[サーボモータ](https://jp.as

元記事を表示

backoff: リトライをギブアップしたときのログレベルを変える

# 環境
* Python 3.9.7
* backoff 1.11.1

# はじめに
[backoff](https://github.com/litl/backoff)モジュールを使って、webapiへのアクセスのリトライ処理を実装しています。

“`python:bar.py
import backoff
import requests
import logging

@backoff.on_exception(
wait_gen=backoff.expo, exception=requests.exceptions.RequestException, max_tries=3
)
def get_url(url):
res = requests.get(url)
res.raise_for_status()
return res

def main():
logging.basicConfig()
get_url(“https://httpbin.org/status/500”)

if __name__ == “__ma

元記事を表示

論文の勉強4 PyramidNet

論文の勉強をメモ書きレベルですがのせていきます。あくまでも自分の勉強目的です。
構造部分に注目し、その他の部分は書いていません。ご了承ください。
本当にいい加減・不正確な部分が多数あると思いますのでご理解ください。

今回は、以下の論文のPyramid Netの実装を行います。

タイトル:Deep Pyramidal Residual Networks

https://arxiv.org/abs/1610.02915

ほとんどResNetと変わりません。

https://qiita.com/tanaka_benkyo/items/4f35dc413b02d09749cf

https://qiita.com/tanaka_benkyo/items/2c82b36c07ed34f2b23e

### PyramidNets
#### ResNet
ResNetなどでは、特徴マップのサイズが減少するタイミングでチャネル数を増加させていました。
ResNetでは、$n$番目のグループの$k$番目のresidualユニットにおける特徴マップのチャネル数$D_k$は、

“`mat

元記事を表示

【AtCoder解説】PythonでABC234のA,B,C,D,E問題を制する!

**ABC234**の**A,B,C,D,E問題**を、**Python3**でなるべく丁寧に解説していきます。

ただ解けるだけの方法ではなく、次の3つのポイントを満たす解法を解説することを目指しています。

– シンプル:余計なことを考えずに済む
– 実装が楽:ミスやバグが減ってうれしい
– 時間がかからない:パフォが上がって、後の問題に残せる時間が増える

ご質問・ご指摘は**コメント**か**ツイッター**、**マシュマロ**、Discordサーバーまでお気軽にどうぞ!

**Twitter: [u2dayo](https://twitter.com/u2dayo)**
**マシュマロ: https://marshmallow-qa.com/u2dayo**
**ほしいものリスト: https://www.amazon.jp/hz/wishlist/ls/2T9IQ8IK9ID19?ref_=wl_share**
**Discordサーバー(質問や記事の感想・リクエストなどどうぞ!) : https://discord.gg/jZ8pkPRRMT**
よかったら**LGTM**

元記事を表示

PythonのライブラリをUnrealEngine4上で表示させる

#はじめに

今回はUnrealEngine4のエディタ上でPythonのライブラリのプログラムを記述したいと思います。
プラグインでのライブラリだとnumpyやsckitlearnが入っていないので使える様にする手引きまで今回は扱います(具体的な用途についてはまだ勉強中です)

#環境
UnrealEngine4 4.25
*以下UE4と略します
Python 3.7.0
osはWindowsになります。

#プラグイン
UE4上で起動させ,「Scripting」から「Python Editor Script Plugin」を選択

![スクリーンショット (921).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2401903/4ebbd5f7-e5e5-df41-848f-cda48d041007.png)

#Hello World
「ウインドウ」から「アウトプットログ」を表示させておく。既存のunrealライブラリから呼び出します。その際に左下からPythonのコマンドを選択します。

![

元記事を表示

複素数を用いたジャンケン実装

# 最初にコード全体

“`python
import cmath

_2pi = 2 * cmath.pi
ROCK = 1
SCISSORS = complex(cmath.cos(_2pi/3), cmath.sin(_2pi/3))
PAPER = complex(cmath.cos(-_2pi/3), cmath.sin(-_2pi/3))

def judge(one, another):
arg = cmath.phase(another / one)
if arg == 0:
return “あいこ”
elif arg > 0:
return “勝ち”
else:
return “負け”
“`

テストコード

“`python
def test():
assert “勝ち” == judge(ROCK, SCISSORS)
assert “勝ち” == judge(SCISSORS, PAPER)

元記事を表示

VScodeでPython docstringを作成する

備忘録として

### 環境
– ホストOS: indows11
– ゲストOS: WSL2 Ubuntu20.04
– VScode1.63.2
– Python3.10.1

### 手順

1. 拡張機能「Python Docstring Generator」をインストールしてVScodeを再起動します

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598747/934878ca-b4ff-b4f7-8a0a-db8189ac2b0d.png)

2. クラスや関数宣言箇所の直下で“` ctrl + shift + 2“` と入力するとdocstringが生成されます

※ “` “”” “` (ダブルクォーテーション3つ)でも生成できますが、入力の手間を考えるとショートカットキーを使う方が良いでしょう

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598747/88

元記事を表示

ラビットチャレンジ【E資格】 深層学習day3

#初めに
本記事はJDLAのE資格の認定プログラム「ラビット・チャレンジ」における深層学習day3のレポート記事です。この記事では以下の内容について、そのモデルの概念から確認し、数式・実装を含めてまとめていきます。

+ 再帰型ニューラルネットワークの概念
+ LSTM(Long Short Term Memory)
+ GRU
+ 双方向RNN
+ Seq2Seq
+ Word2Vec
+ Attention Mechanism

#再帰型ニューラルネットワークの概念

##Recurrent Neural Network(RNN)
再帰型ニューラルネットワーク(Recurrent Neural Network:RNN)は、時系列データの扱いを得意とするニューラルネットワークです。時系列データとは、ある要素が順番に

$$
x_{1}, x_{2}, x_{3}, \ldots, x_{T}
$$

のように並んでいるデータのことを言います。このデータの添え字は通常tで表されますが、このtはデータの種類によって若干意味合いが異なります。時系列データの代表例として音声の波形、動画、文

元記事を表示

Django REST framework で一括登録のエンドポイントを作る(bulk_create)

# Django REST frameworkのレコードの一括作成
Django REST framework(以下DRF)のクラスベースViewには標準でレコードを一括で登録する機能は含まれていない。

複数のデータを登録したいとき以下の3つの方法が考えられる。

1. 繰り返しPOSTを送る
1. リストで送ってORMで繰り返し登録するエンドポイントを作る
1. リストで送って一括で登録するエンドポイントを作る

> 1.繰り返しPOSTを送る

この方法は通信回数が多くなってしまう。

> 2.リストで送ってORMで繰り返し登録するエンドポイントを作る

当初この方法で実現しようとしたが、同時登録数が多いと時間がかかり、フロントへのレスポンスが遅くなってしまった。
さらに、本番環境ではRDBへの繰り返し処理は料金に直結してしまう。

> 3.リストで送って一括で登録するエンドポイントを作る

調べていくと一括登録する`bulk_create()`というメソッドがあることを知った。
https://docs.djangoproject.com/en/4.0/ref/models

元記事を表示

GiNZA sub_phrases で文節の依存関係を解析

## 環境
– Google Colaboratory
– Python 3.7.12
– ginza-5.1.0

## ginza.sub_phrases

`ginza.sub_phrases`を使うと、文節の依存関係を解析できます。

“`
!pip install ginza ja_ginza
“`

“`python
from collections import defaultdict

import spacy
import ginza

nlp = spacy.load(“ja_ginza”)

def analyze(text: str, phrase_func):
ret = defaultdict(list)
doc = nlp(text)
for sentence in doc.sents:
for token in ginza.bunsetu_head_tokens(sentence):
for _relation, sub_phrase in ginza.sub_phrases(tok

元記事を表示

三角関数を使って円を描く

# やったこと
学習用のプログラミングの問題をやっていて、三角関数がわからなくてプログラムが設計できなかったのが悔しかったので、数学を学びなおしています。

基本的な内容かもしれませんが、sinとcosを使えばx座標とy座標がわかるらしいので、円を描画するコードを作成しました。

“` python3
# coding: utf-8
import matplotlib.pyplot as plt
import numpy as np

angle = np.arange(0,360) #0~360の角度のリストを作成
x = np.cos(np.radians(angle)) #x座標のリスト
y = np.sin(np.radians(angle)) #y座標のリスト

plt.plot(x,y)
plt.axis(‘equal’) #x軸とy軸のスケールを揃える
plt.show()
“`

# 出力結果
コンピュータとオセロ対戦37 ~新AIの準備~

https://qiita.com/tt_and_tk/items/068f2afde6db637e189f

# 今回の目標
今後予定しているAI作成のため、まずは4層の深層学習モデルを完成させる。
# ここから本編
まず、「今後予定しているAI」について説明します。[「34 ~性能評価~」](https://qiita.com/tt_and_tk/items/13be9077d3b136c20375)にて、nleast、つまり相手の手数を減らしていく考え方が非常に有用であることが示されました。
また[「32 ~深層学習で勝敗予測、実験2~」](https://qiita.com/tt_and_tk/items/a95c5632be0a1f643408)の結果から、深層学習モデルはRidge回帰と比べ高い精度が期待できることがわかりました。記事として書いてはいませんが、Ridge回帰モデルは数回の予測結果の平均を用いるため思考に時間がかかりますが、深層学習ならあまり時間がかかりませんでした。

以上のことから、深層学習による最終結果の予測値(ゲーム終了時点での自分の石数-相手の石数)

元記事を表示

GMRES法のPythonの実装とNMPCでのトリック

## Abstract

– GMRES法を実装したPythonのコードを示します。
– GMRES法のアルゴリズムの説明は[Krylov部分空間とGMRES法について](https://qiita.com/opticont/items/b3518b470d9e327144be) に譲ります。
– 非線形モデル予測制御(NMPC)で登場する形の方程式がGMRES法でうまく解けることを示します。

## Introduction

突然ですが非線形モデル予測制御(NMPC)において、とある手法(制御入力の追跡, 参考文献\[1\]参照)では解くべき方程式として以下のような形が出現します(厳密にはもう少し複雑ですが)。

“`math
\frac{\partial F}{\partial x} (x) \dot{x} = – F(x)
“`

ただし$x \in \mathbb{R}^n$及び$F: \mathbb{R}^n \mapsto \mathbb{R}^n $は既知で、$\dot{x} \in \mathbb{R}^n $が知りたいとい方程式です。
なお$\frac{\par

元記事を表示

OTHERカテゴリの最新記事