- 0.0.1. 【Python】ezdxfを使ってみよう#5~実践!自動作図編~
- 0.0.2. scipy.stats: Fisher の正確検定 fisher_exact
- 0.0.3. Python3: QRCode の生成と読み取り
- 0.0.4. ubuntu NGiNX uwsgi php-fpm 連携
- 0.0.5. 【AtCoder解説】PythonでABC253のA,B,C,D,E問題を制する!
- 0.0.6. ValueError: Unknown activation function:swish
- 0.0.7. 文字表示付きQRコードの作成
- 0.0.8. 【Python3】PDFの枚数確認
- 0.0.9. Pythonの a//b と int(a/b) の違いが少しわかった。AtCoder ABC253-D
- 0.0.10. 【python】import MeCabに失敗したがpipをupgradeしたら直った
- 0.0.11. 【Python】sin波を作成し、wave形式で出力する
- 0.0.12. scipy.stats: 点双列相関係数 pointbiserialr
- 0.0.13. scipy.stats: 独立 k 標本の等分散性の検定
- 0.0.14. wave形式のファイルから波形データを取り出す
- 0.0.15. scipy.stats: 一元配置分散分析 — Welch の方法
- 0.0.16. クラスをまとめるクラス設計(Facade?)
- 0.0.17. 超初心者がe869120さんの【分野別 初中級者が解くべき過去問精選 100 問】をpythonで解いてみた!
- 1. 145 Average Length
【Python】ezdxfを使ってみよう#5~実践!自動作図編~
ここまで図形の描画と寸法線の描画をまとめました。
それらの応用として、実際の構造物を作ってみましょう!## 実践!自動作図! ##
pythonで自動作図する優位性を考えて、規格の異なる構造物を同じコードで作成することに挑戦!U型トラフ(U字溝)をサンプルにして挑戦してみます。
U型トラフの規格は下記のHPを参考とします。http://www.sckk.jp/product/road/uu.html
カリオストロ級のspaghetti codeとなりましたが、非プログラマのやることと思ってお付き合いください。:spaghetti::spaghetti::spaghetti:
## 前提事項 ##
– これまでの作図メソッドの振り返りを兼ねますので、座標などの管理が合理的でない点が多々あります。座標管理の合理性の追求は次章以降とするつもりです。
– 寸法値b,eを採用し正確な再現をすると三角関数などが登場し可読性が低下するため無視して条件の緩い構造物を書きます。寸法が引かれていない部分はそういう事だとご理解ください。
– ezdxfの単位は1.0mです。正確な単位はmmな
scipy.stats: Fisher の正確検定 fisher_exact <-- 使うな!!
# scipy.stats: Fisher の正確検定 fisher_exact <-- 使うな!! この際,はっきり言おう。 **Fisher の正確検定は,決して使ってはいけない**。 そもそも,Fisher の正確検定の前提は,実際に使われている場面とかけ離れている。 代替案というか,Fisher の正確検定を使わないで,「**連続性の補正をしない$\chi^2$検定を使いなさい**」ということに尽きるようだ。 それを受け入れられない人は,いろいろ自分で調べてみよう。その上で使いたい場合は自己責任でどうぞ。 ということで,**以下は読む必要なし**。 --- `fisher_exact(table, alternative='two-sided')` 引数には 2×2 分割表を与える。デフォルトで両側検定である(`alternative='two-sided'`。他に `'less'`,`’greater'` が指定できる)。 戻り値は「オッズ比」と 2 変数が独立であるという検定結果(両側検定)の $p$ 値である。 以下の分割表について検定する。 `
Python3: QRCode の生成と読み取り
Ubuntu 22.04 で必要なライブラリーのインストール
“`bash
sudo apt install python3-qrcode
sudo apt install python3-pyzbar
“`## 生成 ##
“`py:generate_qrcode.py
#! /usr/bin/python
#
# generate_qrcode.py
#
import sys
import qrcodetext_in = sys.argv[1]
file_png = sys.argv[2]
img = qrcode.make(text_in)print(type(img))
print(img.size)img.save(file_png)
“`実行例
“`text
$ ./generate_qrcode.py https://ekzemplaro.org out01.png
(330, 330)
“`## 読み取り ##
“`py:read_qrcode.py
#
ubuntu NGiNX uwsgi php-fpm 連携
[・準備](#準備)
[・phpfpmのインストール](#php-fpmのインストール)
[・NGiNXの設定](#NGiNXの設定)
[・php-fpmの設定](#php-fpmの設定)
[・起動](#起動)# 準備
・以下の記事を参考にさせていただいた都合上、uWSGIとnginxの設定はこの記事のとおりであるという前提になってしまいますが、 ご了承ください。https://qiita.com/Ningensei848/items/e91fbeef5f03685a7a0b
# php-fpmのインストール
まず、以下の二つのコマンドで
リポジトリをインストールします
“`
sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej / php
“`
php-fpmをインストールします
“`
$ sudo apt install php7.4-fpm
“`
追加モジュールインストールします。
“`
$ sudo apt install php7.4-comm
【AtCoder解説】PythonでABC253のA,B,C,D,E問題を制する!
**ABC253**の**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**
ValueError: Unknown activation function:swish
### ValueError: Unknown activation function:swish が出た時
### 原因:
レイヤーが入っていないため、エラーが起きる
参考記事:https://github.com/qubvel/efficientnet/issues/62### 解決法:
– モデル作成時の既存のレイヤーを入れる↓
“`
from efficientnet.keras import EfficientNetB0
“`
– 自作のレイヤーを入れる↓
[こちらの記事](https://qiita.com/kiakiraki/items/2ec24f13ee870e13a0fb) を参考にする
文字表示付きQRコードの作成
# 目的
csvファイルに書き込んだ文字情報とURLを使って文字表示付きのQRコードを作成します。下記サイトを参考にさせていただきました。
[Pythonによる文字表示付きQRコードの大量生成](https://qiita.com/Kosuke_Matsui/items/abc379e4486eeacd283e)# 開発環境
Python version:3.9.7
OS: windows 10.0# イメージ
![スクリーンショット 2022-05-30 9.15.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/176158/b5d84f68-ffb9-c598-44cb-7a8f51aa5336.png)
表示したい文字と生成したいQRコードのアドレスをcsvファイルとして準備します。
PySimpleGUIを使って、csvファイルを選択し、処理をして、my_qr_codeのフォルダにQRコードを保存できるようにします。# プログラム
プログラムは、[git](https://g
【Python3】PDFの枚数確認
サクッとPDFの枚数を確認したいという場合は以下
“`pip install pdfminer.six“`
“`
from pdfminer.pdfpage import PDFPagefp = open(‘
‘, ‘rb’)
len(list(PDFPage.get_pages(fp)))“`
Pythonの a//b と int(a/b) の違いが少しわかった。AtCoder ABC253-D
こんにちは、佐藤かえでです。
初めてQiitaの記事を書いています。
先日のAtCoderABC253-Dを解いていた際に、解法はあってるのになぜかACにならないということがありました。だいたいこういうときは、floatとか小数点周りで誤差が出ているのでは?と思いいろいろ調べたのでここに記します。
# AtCoderABC253 D
まずそもそもの問題からです。
[D – FizzBuzz Sum Hard](https://atcoder.jp/contests/abc253/tasks/abc253_d)> 問題文
>1 以上 N 以下の整数であって、A の倍数でも B の倍数でもないものの総和を求めてください。解法としては、
1~Nまでの総和から、同区間のAの倍数の総和、同区間のBの倍数の総和を引いて、
重複するAとBの最小公倍数の倍数の総和を足せばokです。詳しくは解説を見てください。
[解説](https://atcoder.jp/contests/abc253/editorial/4017)## 間違いのコードと正解のコード
わたしが最初に提出した間
【python】import MeCabに失敗したがpipをupgradeしたら直った
# 概要
pythonでimport MeCabを実行すると以下のエラーが出てきてしまいました。“`
% python
Python 3.8.6 (default, Jul 18 2021, 21:21:38)
[Clang 12.0.5 (clang-1205.0.22.11)] on darwin
Type “help”, “copyright”, “credits” or “license” for more information.
>>> import MeCab
Traceback (most recent call last):
File ““, line 1, in
File “/Users/[username]/vscode/workspace/test/.venv/lib/python3.8/site-packages/MeCab/__init__.py”, line 10, in
from . import _MeCab
ImportError: dlopen(/Users/[usern
【Python】sin波を作成し、wave形式で出力する
音声処理をするときに、基準となる音声データが欲しくなる。
自分の場合、”ラ”の音に該当する440 Hzの音を作成して、音声データを比較をすることが多い。
その音を周波数領域などで可視化するだけでなく、耳で聞くと、体感しながら音声処理が可能になる。
何かしら音声ファイルが欲しい。今回は、Pythonで440 Hzの音をデータ配列上で作成するだけでなく、waveファイルを作成する。
実行環境は次の通り。
“`
Python 3.8.1
Ubuntu 20.04.4 LTS
“`# sin波のデータ配列を作成
今回は上記でも書いたように”ラ”の基本周波数となる$ f$ = 440 Hzの音を1秒間作成する。
振幅を$A$、サンプリングレートを$f_o$、サンプルデータ番号を$n = 1,2,…,N$とすると、sin波の数列は、
“`math
A\sin\left(\frac{2\pi f}{f_o}n\right)
“`
で与えられる。プログラムでは次のようにしてデータ配列を作成する。
“`python
import numpy as np
import wa
scipy.stats: 点双列相関係数 pointbiserialr
# scipy.stats: 点双列相関係数 pointbiserialr
特別な名前がついているが,ピアソンの積率相関係数において,片方の変数が 2 値データの場合ということである。
`pointbiserialr` は point biserial correlation coefficient r で,訳すと,点双列相関係数ということである。
2 値変数は連続変数なので(知らない人も多いかもしれないが),当たり前なのだが,その昔,計算環境が劣悪だった頃は,特別な場合に簡単な計算式で計算できるということで誕生したものかな。
普通に(数値に変換しなければならないかもしれないが) `scipy.stats.pearsonr` を使えばよい。
“`python
import numpy as npa = np.array([0, 0, 0, 1, 1, 1, 1])
b = np.arange(7)
“`## 1. 点双列相関係数
`pointbiserialr(x, y)`
戻り値はピアソンの積率相関係数と無相関検定($H_0:\rho=0$)の両側検定の
scipy.stats: 独立 k 標本の等分散性の検定
# scipy.stats: 独立 k 標本の等分散性の検定
複数の群の母分散が等しいかどうか検定する。
帰無仮説 $H_0$: それぞれの母分散は等しい。$\sigma^2_1 = \sigma^2_2 = \dots = \sigma^2_k$
対立仮説 $H_1$: それぞれの母分散は等しいとはいえない。$\sigma^2_1 = \sigma^2_2 = \dots = \sigma^2_k$ ではない(どこか少なくとも 1 つの等号は不等号である)。
## 1. Levene 検定,Brown-Forsythe 検定
`levene(*args, center=’median’, proportiontocut=0.05)`
関数名が levene であるが,それはデフォルトの `center=’median’` から見れば不適切である。
Levene は `center=’mean’` に相当する検定を提唱した(1960)。
Brown と Forsythe は後に `center=’median’` とする検定を提唱した(1974)。そのため,Brown-
wave形式のファイルから波形データを取り出す
久しぶりに音声処理をしたくなった。目標はMFCCと呼ばれるメルケプストラム係数で特徴量抽出をすること。
このあたりの記事をググってもPython2系だったりと10年前ぐらいの記事が多いため、新しく記事を書くことにした。
ここでの実行環境は次の通り。
“`
Python 3.8.1
Ubuntu 20.04.4 LTS
“`# 検証するwaveファイル
ここでは、440Hzのsin波を1秒間だけ再生するwave形式の音声ファイル(440Hz.wav)で検証を行うことにする。ファイルパラメータは次の通りとする。
“`
・チャネル数:モノラル
・1サンプルあたりのバイト数:2 byte
・サンプリング周波数:44100 Hz
・再生時間:1秒
“`# 【簡単】waveファイルの波形データをnumpy配列に変換【soundfile】
音声処理をするPythonのライブラリの選択肢は多い。今回はsoundfileを使用する。
“`python
import soundfilefname = “440Hz.wav”
data, fs = soundfile.read(fn
scipy.stats: 一元配置分散分析 — Welch の方法
# scipy.stats: 一元配置分散分析 — Welch の方法
scipy.stats の `f_oneway` は,各群の母分散が等しいと仮定する,古典的な検定である。
R では,等分散を仮定しない Welch の方法がデフォルトであるが,Python ではどのライブラリにもない。
じゃあ,作っちゃお。
## 関数定義
“`python
import numpy as np
from scipy.stats import fdef oneway_ANOVA(*x, equal_var=False):
k = len(x)
ni = np.array([len(y) for y in x])
mi = np.array([np.mean(y) for y in x])
vi = np.array([np.var(y, ddof=1) for y in x])
if equal_var:
n = sum(ni)
mean_x = sum(ni * mi) / n
df1,
クラスをまとめるクラス設計(Facade?)
## 記事の内容
複数エンドポイントを持つAPIを実装するのに、
どうまとめるのが良いか考えていてエンドポイント毎にクラスを作成して、
エンドポイント毎のクラスをまとめるクラスを作ると汎用性の高い
クラスができると思い作ってみました。デザインパターンのFacadeっぽい感じになると思います。
Facacdeで調べると複数機能を1つにまとめるために使われることが多くて、
呼び出し先をまとめるためではなさそうなので、っぽいとつけました。Facadeについてはこの記事がわかりやすかったです。
https://xtech.nikkei.com/it/article/COLUMN/20051216/226402/## 設計
同じメソッドを持つクラスを作成するので抽象クラスを作成します。
抽象クラスの命名は末尾にBaseを付けるか先頭にAbstractを付けることが多いようです。APIを使うのにトークン取得は何を共通で持たせたいので抽象クラスで実装して継承します。
![クラス図.drawio.png](https://qiita-image-store.s3.ap-northe
超初心者がe869120さんの【分野別 初中級者が解くべき過去問精選 100 問】をpythonで解いてみた!
先週のABCでなんと入茶することができました! そして緑コーダになるための方法を適当にググっていると良い感じのブログを見つけたので、その方のやり方を真似てみることにしました!
https://ryusuke920.hatenablog.jp/entry/2021/04/18/170331
この方がまずはe869120さんの【分野別 初中級者が解くべき過去問精選 100 問】を解くのが良いと書いていたので、ゴリゴリと解いていくことに決めました!【全探索:ビット全探索】までの問題を全部終わらせた後に、どこにも解き方をまとめていないことに気づいたので、順列全探索から自分なりの解き方、自力で解けなかった時は他の優秀な方の解き方を自分なりにまとめていきたいと思っています!もし同じ問題に取り組むあなたの助けになれたら幸いです!
145 Average Length
https://atcoder.jp/contests/abc145/tasks/abc145_c
“`python:practice.py
from itertools import permutation
JavaとPythonのHello World(http getバージョン)
## ■前提
Javaのフレームワーク:spring boot
Pythonのフレームワーク:fastapi## ■本題
### Java
ファイル
“`HelloApplication.java
package com.example.hello;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class HelloApplication {public static void main(String[] args) {
SpringApplication.run(HelloApplication.class, args);
}
}
“`“`GreetingController.java
package com.example.hello;import java.util.concurrent.at
Pythonソースコードからドキュメント自動生成方法
Pythonソースコードからドキュメントを自動生成するツールに *Sphinx* というツールがあります。ソースコードにコメントを記述しておくと、このコメントの情報から美しいドキュメントを生成してくれます。
慣れが必要なので簡単に使い方を書きます。# サンプル環境構築
* 仮想環境構築
“`
$ python3 -m venv samplevenv
$ source samplevenv/bin/activate
$ git clone https://github.com/shunsvineyard/python-sample-code.git
$ cd python-sample-code
$ python3 -m pip install -r requirements.txt
$ rm -r docs
“`* ディレクトリ構成
“`
├── LICENSE
├── README.rst
├── requirements.txt
├── setup.py
├── tests
└── trees
├── __init__.py
├── __main__.
dijkstra法備忘録
# はじめに
atcoderでよく登場するので,備忘録としてまとめました.
# ダイクストラ法(dijkstra’s algorithm)の問題と戦略
### <問題>
出発点を一つ固定して,この頂点から他のすべての頂点への最短経路を求める問題を考える.### <戦略>
各頂点への最短路を出発点に近い(短い)ところから一つずつ確定していく
“`math
\def\set#1{\left\{{#1}\right\}}
“`
### 例
頂点集合$V=\set{A,B,C,D,E,F}$と辺の集合が$E = \set{(A,B),(A,C),(B,D),(C,E),(C,F),(E,B),(E,D)}$となる重み付きの有向グラフを考える.
> 例えば,点Aから点Bへ行くには6km歩かなければならないようなグラフになっている.
この例での移動は一方通行(有向グラフ)であるが,ダイクストラ法は対面通行(無向グラフ)でも使用できる.![dijkstra.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/