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

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

Pythonによるファイル整理

## 現在のディレクトリのフォルダを取得
### インポートなしバージョン
“`py
dirs = [d for d in os.listdir(“./”) if os.path.isdir(d)]
“`
### よりかっこいい方法
“`Python:Windows
import glob
dir = glob.glob(os.path.join(“./”,”**”+os.sep))
“`
“`Python:Mac
import glob
dir = glob.glob(os.path.join(“./**/”))
“`

## 各フォルダでプログラム実行
“`Python
import shutil
import subprocess
for f in dirs:
shutil.copy(“Some.input”,f)
files=[‘Some.out’,’out.txt’]
for fi in files:
if os.path.exists(os.path.join(f,fi)):
os.remove

元記事を表示

pyproject.toml とは何か

# TL;DR

* pyproject.toml は PEP で提案されているパッケージのビルドに必要なデータを定義するファイルのフォーマット
* setup.py などを代替するファイルとして提案されている
* ツールの設定を書くファイルとして pyproject.toml に対応するケースが増えつつある
* pyproject.toml がプロジェクト管理においてどのような役割を持つのかはそのプロジェクトが採用しているツール次第
* 状況に合わせてpyproject.tomlを使うべきか判断をしていくしかない

# Poetry の隆盛と pyproject.toml

しばらく前から [Poetry](https://github.com/sdispater/poetry) の名前をよく聞くようになりました。プロジェクトのパッケージの依存関係や、そのプロジェクトのPython実行環境を管理するツールです。Node.js でいう `npm` あるいは `yarn` コマンドのような、Ruby でいう `bundle` コマンドのようなツールです。

Poetry はたとえ

元記事を表示

Python -連続時間マルコフ連鎖の状態遷移シミュレーション

# 概要
**連続時間**マルコフ連鎖(Continuous Time Markov Chain)の状態遷移シミュレーションを実装します.
利用するアルゴリズムはギレスピーアルゴリズム(Gillespie Algorithm)です.実装を載せたのち簡単に概略を説明しています.

**離散時間**マルコフ連鎖の状態遷移シミュレーションはこちらの記事を参考にするといいと思います.
[Python – マルコフ連鎖状態遷移シミュレーション](https://qiita.com/popondeli/items/673b6ad920329875823c)
# 実装
3状態の場合(state = 0,1,2)のマルコフ連鎖を考えます.

“`Python:CTMC.py
import numpy as np
import math
import random
import matplotlib.pyplot as plt
#状態数
N=3
#遷移率行列
TRANSITION_MATRIX = [[-0.3, 0.1, 0.2],
[0.2, -0.9,

元記事を表示

pythonの関数、引数、スコープ、戻り値、モジュール、ライブラリをprogateで学習

#python progate 学習コースⅢ
##関数
*関数の作り方*
関数はある処理をまとめたプログラムの塊。printやinputは関数
**def 関数名():**と定義する
関数を実行するには
**関数名()**で呼び出す
関数は定義した後でしか呼び出せない
###引数
引数は関数を呼び出す際に関数に値を渡すこの値のこと
引数を渡すとその関数内で値を利用できその値によって値を変えることができる
関数に引数を渡すには引数を入れる箱となる変数(仮引数)を指定する
関数に引数を渡すには**関数名(引数)**として呼び出す
###スコープ
変数にはその変数が使える範囲が存在する、この範囲をスコープ
仮引数や関数の中で定義した変数のスコープは関数の中だけ

関数が複数の引数を受け取るためには、仮引数をコンマ(,)で区切って定義する
引数は左から順番に「第1引数、第2引数・・・」と呼ぶ
複数の引数を渡すには対応する仮引数の順番と同じにする必要がある

引数に初期値を設定できる
引数が省略されたとき、初期値が与えられていれば代わりの値として初期値が使われる

###戻り値
関数の処理結果を

元記事を表示

綺麗なものを見たいので最適化関数のベンチマークに利用される関数の可視化をしてみた

# 参考

https://en.wikipedia.org/wiki/Test_functions_for_optimization

# 実行ソース

https://github.com/akidukin/optimize_test/blob/master/benchmark_functions.py

# 対象

– 決めていない(自己満足)
– 「へーこんなのあるんだー」って思う人

# 最適化関数のベンチマークに利用されている関数 とは

最適化関数とは
https://ja.wikipedia.org/wiki/最適化問題

ざっくりなイメージとして
1) x + 10 = 25
2) x + 60 = 15
3) x + 45 = 60
のxを機械に求めさせる時に 正確に求めさせる関数
上記の関数の性能を測るためのホゲホゲ、最適化関数の性能っていうのもいくつか指標があって、速度や正確性、ロバスト性などなんか難しそう。

単純に言うと、上記のような単純な(1次元でかつ単一解)物で性能を測っても変わらないので、より複雑な物で測った方が性能の比較がしやすいよねってこと。

元記事を表示

PythonistaのUI実装で遊ぶ[Actionの実装]

# はじめに
Pythonistaで作ったUIに動きをつけることにけっこう悩んだので記事にしておきます。あんまりPythonistaのUI実装を触らないでここ見てる人は以下を先に読んだほうがいいと思いますよ!
[Pythonista3のUI実装で遊ぶ[超超入門]](https://qiita.com/EkatoPgm/items/31c84b458f47752e3517)
[PythonistaのUI実装で遊ぶ[画面要素]](https://qiita.com/EkatoPgm/items/c382996be664cdf64d78)

# Action
PythonistaのUI実装では、各要素にActionという属性が設けられていて、たとえばボタンであれば、押下(タップやクリック)されたときの動作を定義することができます。
赤い丸の部分です。

元記事を表示

PythonistaのUI実装で遊ぶ[画面要素]

# はじめに
Pythonistaのui実装で利用できる要素について説明しちゃいます!

# 種類
まずは種類の紹介!こんなの↓がありますがスマホアプリ使ってれば見たことあるような要素が多いと思うので何をするためのものなのか説明は省きますね。

これらの要素を駆使して、作りたいアプリの画面を作っていくわけです。
そう、こんなふうに。

操作は直感的なのでこの程度なら迷わずに作れると思いますが一応↓
①`CustomView`で画面を覆って、`BackGround Colo

元記事を表示

Pythonista3のUI実装で遊ぶ[超超入門]

# はじめに
ぼくは自宅等でPython遊びをするときはiPadで[Pythonista3](https://apps.apple.com/jp/app/pythonista-3/id1085978097)というアプリを使っています[(過去記事)](https://qiita.com/EkatoPgm/items/3f5aba481c63f77c739f)。
Pythonista3にはスマホアプリのUIを実装するためのライブラリが備わっていて、なーんかこれ使ってかっこいいことできねーかなぁなんて考えたので、いろいろやってみました!

# ご紹介
まずはPythonista3のuiライブラリがどんなものなのか見ていきましょう!

## ファイル作成
まずはUI実装のためのファイルを作ります。
新規ファイル作成で「Script with UI」を選択しましょう!

MatplotlibとNumPyで周波数応答を複素平面上に描く,ついでに振幅/位相特性も描く

ディジタルフィルタの周波数応答を可視化する機会があったのでメモしておきます.

## import
“`Python
import numpy as np
import matplotlib.pyplot as plt
“`

##複素平面上に描く
複素関数を高校数学の教科書みたいな複素平面に描きたい!

“`Python
def plot_cp(func,theta): # 複素平面上に描く
# FigureとAxesを描画
fig, ax = plt.subplots(figsize = (5, 5))
ax.grid()

# 表示範囲を設定 適宜弄る
lim = [-2.5, 2.5]
ax.set_xlim(lim)
ax.set_ylim(lim)

# 実軸
plt.quiver(lim[0],0,lim[1]-lim[0],0,angles=’xy’,scale_units=’xy’,width=0.005,headwidth=10,headlength=10,headaxislength=5

元記事を表示

Visual Studio CodeでPythonインタプリタっぽいことする

# 経緯
今まで使ってたPyScripterのインタプリタが便利だったから、Visual Studio Codeでも同じことしたかった。

# デフォルトの言語をPythonにする
Pythonしか開発で使わない人には便利。Settingsから”new file”で検索し、Default Languageをpythonにする

![スクリーンショット 2019-11-22 21.38.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/209720/0881e882-a9ff-a07e-cc77-872c657f0b8d.png)

# AREPLをインストールする
Pythonコードを作ると、リアルタイムに実行結果を表示してくれるVSCodeのextension。多分他にもこういった拡張機能を持ったextensionはあると思うけど

![スクリーンショット 2019-11-22 22.04.45.png](https://qiita-image-store.s3.ap-northeast-1.ama

元記事を表示

[Blender]非表示になってるオブジェクトの、アウトライナ上での選択状態を知る

画像のように、非表示になってる状態だと以下のコマンドで選択状態が把握できないらしい。

“`
bpy.context.selected_objects
“`

![キャプチャ.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492401/64bfe630-2ebd-b060-7796-a81c55ba1114.jpeg)

代わりに、一旦表示状態に切り替えてから非表示に戻すしかないっぽい

“`
import bpy
obj1 = bpy.data.objects[‘Cube.003’]
obj1.hide_viewport = False
s = bpy.context.selected_objects
print(s)
obj1.hide_viewport = True
“`

うーん、・・・

Blender2.8 自分用メモ

元記事を表示

初心者がUE4でルービックキューブ風なものを作って強化学習用のライブラリにしたい #5

前回に引き続き初心者がUE4を絡めたPythonライブラリを作れないか色々進めていく記事です(ほぼ自分のための備忘録としての面が強い・・)。

最初 : [#1](https://qiita.com/simonritchie/items/e8d84c2941b5bd2862f5)
前回 : [#4](https://qiita.com/simonritchie/items/585d4fd7cb2de11607a4)

# アニメーション付きの回転の処理をPythonと繋いでいく

前の記事で即時の回転の関数をPythonと繋いでいきましたが、次はアニメーション付きのものも繋いでいきます。

まずはブループリント側の作業から進めます。
大体は即時の回転のBPと同じ感じです。ほぼほぼ必要なものは用意されているので、キューブに対してループを回して、対象の回転対象のキューブに対して回転のフラグを立てるだけです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228778/5805b245-01

元記事を表示

Sourcetrail(Linux)で大きなPythonプロジェクト(Django)を開いてみたら世界が変わった

Sourcetrailなるツールが公開されたようで、面白そうなので触ってみました。
[すでに触ってらっしゃる記事](https://qiita.com/cloudsnow/items/7d7f3b859186667379ef)がありましたが、そこはご愛嬌で。
Ubuntuです。

使ったことがあって、ぱっと思いつく大きなリポジトリがDjangoだったので、Python, Djangoの組み合わせで試してみます。

## SourceTtrailをインストール

[Sourcetrail(GitHub)のリリースページ](https://github.com/CoatiSoftware/Sourcetrail/releases)からダウンロードできます。
64bit版Linuxのtarファイルをダウンロード

その後`tar -xzf Sourcetrail_2019_4_61_Linux_64bit.tar.gz -C path/`で任意の場所に解凍。
バージョン名は適宜。

回答したSourcetrailディレクトリに入り、root権限で`install.sh`を実行すればインストー

元記事を表示

ゼロから始めるcodewars kata[day1] lambdaを使って関数を戻り値に?!

# codewars kata とは
一言で言うなら、プログラミングを鍛えられる道場です
海外版AtCoderと言ってもいいかもしれません
個人的にはAtCoderより肌に合いました(なおAtCoderはほぼ触れたことがない)

# きっかけ
この記事を読んでじゃあやってみようと思い3日前くらいから始めました
[19歳のソフトウェア開発者の女の子からのアドバイス](https://qiita.com/baby-degu/items/ea7b837c8d4d63e1fdd7)
>私は、1日に最低でも5つのCodeWars Kataを解くようにしています。CodeWarsは、コーディングを始めたばかりの時だけでなく、何年もコーディングを続けてきた時でも、あなたの親友です!CodeWarsが提供する問題の解法はいつもとても有益で、他の人が提供した解法をスクロールしていくだけで自分の構文を大きく改善することができます。もう1つの大きな利点は、コーディングの面接に行くと、多くの場合CodeWarsで出されるものとよく似た質問をされることがあるということです。

というわけで早速問題へ
とはいえ

元記事を表示

Github Actions を使って Windows 用 Wheel をビルドした

[mysqlclient](https://github.com/pymysql/mysqlclient-python) という Python 用の libmysqlclient を利用したクライアントライブラリをメンテナンスしています。

このライブラリでは Windows ユーザーが簡単に利用できるように libmysqlclient を静的リンクした Binary Wheel を提供しています。
この Binary Wheel のビルドを Github Actions を利用して自動化してみました。

Github Actions 初心者なのでもっといいやり方があるかもしれませんが、だれかの参考になれば。

## 感想

先に感想から書いておきます。すでに他のプロジェクトで AppVeyor を使って Windows 用の Wheel を自動ビルドした経験があったのですが、それよりも圧倒的に快適でした。

* VM起動が早い — AppVeyor に比べて push してからVMが立ち上がるまでの時間が圧倒的に短いように感じました。 AppVeyor を使っていたときは pus

元記事を表示

queueのjobをcancel、deleteしてもworkerで動いている処理は止まらない(2)

## 背景
前回記事より良い方法見つけた

– https://qiita.com/nakamumu/items/33fbca0b407aeec4112d

### ジョブを消す時にRedisClientにset
“`python
from django_rq import get_queue
import os
import signal

q = get_queue()

job_id = ***
job = q.fetch_job(job_id)

job.connection.set(job.key + b’:canceled’, True, ex=30)
“`

### 処理側で確認
“`python
from rq import get_current_job

def 処理():
job = get_current_job()
for item in items:
if job.connection.get(job.key + b’:canceled’):
break
“`

## 参考
– https://stackoverflow.

元記事を表示

LambdaからSystems Managerを実行してEC2のバックアップを取得する

## はじめに
EC2の定期バックアップを取得をするのに良い方法はないかと思っていたところ、SSMでスナップショットが取得できることを知ったので、Lambdaから実行してみました。
サーバーの作成は省略しますが、Systems Managerを使用するので、SSMエージェントがデフォルトインストールされているWindows Server 2019を使用しています。

参考
[Windows インスタンスで SSM エージェント をインストールし設定する](https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/sysman-install-ssm-win.html)

# やったこと
– Windowsサーバーの作成
– Systems Managerからバックアップ取得
– LambdaからSystems Manager ドキュメントの実行

# Windowsサーバーの作成とIAMロール設定
バックアップを取得するため、EC2を1台作成します。
![image.png](https://qiita-im

元記事を表示

Pythonで DI Container を作る

# Pythonで DI Container を作る
DI Containerとは、クラスのインスタンス生成時に、コンストラクターの引数に自動で適切な型のインスタンスを渡して生成をしてくれるシステムです。
DIパターンの実装を容易にして、より疎結合なコードを表現できます。

詳しくDIパターンについて詳しく知りたい方は別の記事を参照してみてください。
実はとっても簡単なつくりなので頑張ります。

完成したレポジトリーのリンクを張っておきます。
[レポジトリー](https://github.com/Saknowman/python_di_container)

## DEMO

DIクラスに実装クラスはこれですよとか、このクラスはシングルトンで使いますよ、とかを登録します。
その後、DIクラスにこのクラスのインスタンス作ってーと頼むという流れです。

いかのDEMOを見てください。

“`python
class Animal:
def __init__(self, kind: str, name: str):
self.kind = kind

元記事を表示

画像を矩形ではなくて輪郭に沿って切り抜きたい[python OpenCV]

## 目的
OpenCVで画像内のオブジェクトの輪郭を取得して、そこを切り取りたい。調べるといろんな輪郭でも、外接矩形・四角で切り取っているパターンしか見当たらない。なんとかオブジェクトだけをそのまま切り取りたい。

## 考え方
OpenCV + pythonでの画像の切り取りは img[ 10:100, 20:100 ]というように、元画像のピクセル範囲を指定して切り抜く方法しかなさそう。

なので、最初に外接矩形で切り抜き、さらに、外接矩形サイズでキャンバスを作っておいて、、
取得した輪郭情報にをデータ整理して、行毎に最大の値と最小の値を取得し配列にしておく。
先に作っておいた透明キャンバスに1行毎に、最小と最大の間にはいったら、切り抜き元の画像から取得してプロット…,
というのを行ごとに繰り返せばいけそう。

いけるべ!

## コード

“`python
import cv2
import numpy as np
from pprint import pprint
from copy import deepcopy
import sys
import os

#入力

元記事を表示

深層学習の層の数と精度変化の歴史のグラフ

# 深層学習の発展のグラフ
深層学習の発展を表すグラフとしてよくILSVRCにおける精度の変化と層の数の推移を表すグラフを見かけるので作っておきました.

![ilsvrc_winner.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/355593/106ed248-15fa-4613-ca04-f477ca3df03b.png)

# pythonのコード

“`py
import matplotlib.pyplot as plt

def plot_res():
plt.rcParams[“font.family”] = “Arial”
plt.rcParams[“font.size”] = 18
fig = plt.figure()

c = [“skyblue”, “blue”] * 5
depths = [8, 8, 22, 152, 205]
years = list(range(2012, 2017))
errors = [16.4

元記事を表示

OTHERカテゴリの最新記事