Python3関連のことを調べてみた2020年11月02日

Python3関連のことを調べてみた2020年11月02日

pythonでymlからcommandをloadして実行する

yml fileからcommandを読み取るプログラムを書いたので掲載しておきます
### yml file
“`
cmd1:
command: ls -l
type: ls

cmd2:
command: ls -a
type: ls
“`

### python code
“`
import subprocess
import yaml

with open(‘sample.yml’) as file:
obj = yaml.safe_load(file)

cmd1 = obj[‘cmd1’][‘command’]
types = obj[‘cmd1’][‘type’]

print(‘実行モードは’, types,’です。’)
print(cmd1)
subprocess.run(cmd1, shell=True)

print(‘\n’)

cmd2 = obj[‘cmd2’][‘command’]
types = obj[‘cmd2’][‘type’]

print(‘実行モードは’, types

元記事を表示

【0】UbuntuにAnacondaで構築するTensorFlow-GPU環境構築

#ゴール
Ubuntu Desktop/Serverをインストールした所から、TensorFlowによるGPU計算ができる環境をAnacondaで構築する。

#対象者
Linuxに不慣れでAnaconda等の仮想環境もよくわからないという深層学習エンジニア

#機材
OS: Ubuntu 18.04LTS Desktop/Server

#この記事のモチベーション
 私自身、Ubuntu Serverにおいて深層学習(Deep Learning)を行いたく、TensorFlowのGPU版を動かすための環境構築を行いましたが、情報を集めることや注意するポイントの多さに圧倒されました。したがって自身の備忘録のため、また、同じ志を持つ人たちに向けてまとまった情報を提供することで、様々なページの往復や順番の違いなどで知識のつなぎ合わせに苦しみを減らせればと考えたため、知識や反省点を環境構築の過程の中で説明したドキュメントを作成しました。

#ドキュメントの構成
環境構築を4つの条件に分けました。
煩雑にならないように一つの条件に対して一つの記事で説明します。
この章を含めてドキュメントは全5

元記事を表示

Pythonで入門 遺伝的アルゴリズム

– 遺伝的アルゴリズムについて、基本的で簡単なところを勉強として書いていきます。
– 理解を深めるために遺伝的アルゴリズムを実際にPythonでコードを書いて、いくつか問題を解く形で動かしていきます。

# 遺伝的アルゴリズムとは

英語ではgenetic algorithm。初出は1975年、ミシガン大学のジョン・H・ホランド教授によって提案されたそうです。

– [遺伝的アルゴリズム – Wikipedia](https://ja.wikipedia.org/wiki/%E9%81%BA%E4%BC%9D%E7%9A%84%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0)
– [ジョン・H・ホランド – Wikipedia](https://ja.wikipedia.org/wiki/%E3%82%B8%E3%83%A7%E3%83%B3%E3%83%BBH%E3%83%BB%E3%83%9B%E3%83%A9%E3%83%B3%E3%83%89)

ある程度、各個体で個別となる属性を持たせた「遺伝子」「染色体」扱いの要素

元記事を表示

Vega-Liteを使ってcsvファイルを可視化したい!

#きっかけ#
 研究室でVega-Liteを使うことになったのですが、チュートリアル終了後なにから手をつければいいのかわからず、かなり手こずったので備忘録+誰かの助けになれば幸いです。

#目的#
###手持ちのcsvファイルをVega-Liteを使って可視化したい###
 [チュートリアル](https://vega.github.io/vega-lite/tutorials/getting_started.html)は公式で提供されている[オンラインのエディタ](https://vega.github.io/editor/#/edited)を使うことで問題なく進められるのですが、自分で持っているファイルをアップロードする方法が無いのか、自分が見つけられなかっただけなのかわかりませんが、できなかったためローカルでVega-Liteを使う方法を探しました

#手順#
色々調べた結果

+ pyhtonでVega-Liteを使える
+ JupyterLabを使うと色々便利そう

というわけでJupyterLabでVega-Liteを使おうとしたのですが、結論から言うと何故か自分の環境だと

元記事を表示

Pythonの配列でつまづいた話

最近Pythonを触る中で、個人的に「Python、そうだったのか」となった配列の話。
(ちなみに自分はこれでつまづいて1, 2時間溶かした過去がある)

## 配列追加のappend / +=
配列に文字列を追加しようとする時の書き方として、以下はそれぞれ違う。

“`python
arr = []
arr += “hello” # => [‘h’, ‘e’, ‘l’, ‘l’, ‘o’]
arr.append(“hello”) # => [‘hello’]
“`
`+=`は配列の連結でありオペランドとしてiterableなオブジェクトを受け取るので、文字列は文字の配列として扱われて一文字ずつ配列に格納される。
例えばint型を渡すと、もちろんこれはiterableではないのでエラーとなる。

## Rubyは?
細かく調べてないが、irbで確認するとRubyも同じような感じっぽい。

“`Ruby
arr = []
arr += ‘hello’ # => TypeError: no implicit conversion of String into

元記事を表示

pip list がいつまでも終わらない。

#はじめに
Raspberry Pi Zero WのPython3を更新しようと、Python3.9をビルドしてインストールしました。
すると、`pip list`でインストール済みパッケージ一覧を確認する際に、リストもエラーも表示されずに止まってしまう症状に遭遇しました。Zeroだから時間がかかるのかな?と思い数時間放置してみましたが、変化ありませんでした。
ネットで検索してもズバリの回答が見当たらなかったため、ここに解決法を記します。

最後に追記あります。
この症状は、システムをバックアップを作成して複製後のSDカードで起動したり、host名を変更したことにより、乱数生成機の乱数が枯渇していたことが根本原因でした。

##症状
`pip list`でインストール済みパッケージ一覧を確認すると、何も表示されません。
^Cで止めると、デバッグ情報がズラズラと出てきて、`self._config = {‘authkey’: AuthenticationString(os.urandom(32))…`が含まれるあたりでTerminateした事がわかります。

##確認
`python

元記事を表示

Python3からCloud Storageを利用(入門)

# はじめに
## BytesIOとは
BytesIOとは、メモリ上でバイナリデータを扱うための機能であり、Python の標準ライブラリ io に含まれています。バイナリデータとは主に画像や音声などのデータのことを示しています。(C#でいうMemoryStreamのようなものです)

# サービスアカウントの作成
[Google Cloud Platform](https://console.cloud.google.com/)にアクセスしてサービスアカウントの作成(API)を行います。
ナビゲーションメニュー > APIとサービス > 認証情報 をクリックし画面に移動します。
そしてサービスアカウントを管理をクリックします。
![GCP.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/817075/18512082-f5d6-4f93-faa8-bb2ddaaa26be.png)

次の画面ではサービスアカウントを作成をクリックします。
![GCP.png](https://qiita-image-s

元記事を表示

Numpyの型ヒント備忘録(NDArray)

`Numpy` の型ヒント・型チェックについて、ちょっとハマったので備忘録として残します

今回使っているのは `nptyping` という numpy 用の型付けのためのライブラリです。リポジトリ: [GitHub – ramonhagenaars/nptyping](https://github.com/ramonhagenaars/nptyping)

# ベクトルのとき
下の二つは要素が `int` でなくても `True` となります。**(`Any` は標準ライブラリの `typing` からインポートします)**

“`python
vec = np.array([1, 2, 3], int)
isinstance(vec, NDArray[3, int]) # True
isinstance(vec, NDArray[(3,), int]) # True
isinstance(vec, NDArray[(3, …), int]) # True
isinstance(vec, NDArray[(3,), Any]) # True
isinstance(vec, ND

元記事を表示

借金完済まで何ヶ月?【Python】

今回の記事では、
借金総額と年利、月々の返済額から、あと何ヶ月で返済し終わるかを求めるプログラム
を書いていきます。

##実行環境
– MacOS
– Python 3.7.5

##求め方
**1, 関数を作る**
まずは、関数を作ります。
debt(借金)という関数に、引数を3つ渡します.
1つ目には借金額 → borrowed
2つ目には利率(年利) → annual
3つ目には返済額 → repayment

“`debt.py
def debt(borrowed, annual, repayment):
“`

**2, 完済するまでループするWhile文**
finishedがTrueになるまでループする、While文を書いていきます。
まず、FinishedをFalseで定義してからWhile文を書きます。

“`debt(2).py
def debt(borrowed, annual, repayment):
finished = False

while finished == False:
“`

**3, 残高が返済額より多いかどうか(

元記事を表示

Pythonで最小二乗法をやってみた

#はじめに
どうも。今回は最小二乗法をPythonで実装する方法を記事にしてみました。先に述べておきますが、以下の数学の知識がないとチンプンカンプンだと思いますのであしからず。
###必要な知識
・1次関数や2次関数などの基本的な関数
・微分と偏微分
・総数(Σ)、平均について

高校生までの数学の知識があれば、特に問題はないと思います。では、早速どんなものか見てみましょうか。
#最小二乗法とは
こんなデータがあったとします。(下のグラフ)
![data_least_squares_method.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/835335/5ee9bafe-2317-4b51-08af-9f4975af37b4.png)
「それぞれの点からの誤差を最小にした1次関数を描いて下さい」と言われても、無理ですよね。これを可能にする方法が**最小二乗法(最小自乗法)**です。測定データ$y$がモデル関数(元となる関数)$f(x)$と誤差$\varepsilon$の和であるときに使用できます。式で

元記事を表示

スクレイピング:Webサイトをローカルに保存

#スクレイピング:Webサイトをローカルに保存

備忘録。バックアップ目的のみ。
太陽電磁波?太陽磁気嵐?のような世界的電源停止に備えて。microCMSにはバックアップ機能がないため実施。

###コード

“`python
import os
from urllib.request import *

# 記事カテゴリー毎のURL
#base_url = “https://benzoinfojapan.org/patients-article/”
#base_url = “https://benzoinfojapan.org/doctors-article/”
base_url = “https://benzoinfojapan.org/medias-article/”

# 保存先ファイル名接頭詞
#prefix = “patients-article”
#prefix = “doctors-article”
prefix = “medias-article”

num = 1

# 各カテゴリ記事上限値をwhile num <= Xに設定. 以下2020年10月現在値. #

元記事を表示

Pythonで簡単なGUIアプリを作成する

最近AIや分析等の分野で活躍しているPythonですが、普通のデスクトップアプリケーションの作成にも利用可能です。

今回はPythonに標準で付属しているGUIライブラリ「Tkinter(ティーキンター、ティケーインター)」を利用して、入力した値をターミナルに書き出す簡単なGUIアプリを作成します。

## 使うもの

私が動作を確認した構成は以下の通りです

– Python 3.7.3

IDEはVisual Studio Codeを利用しています。

## Python のインストール

公式サイトに行ってダウンロード&インストールを行ってください。

## とりあえずTkinterを使う

Visual Studio Codeにて「新しいファイル」をクリックして、「form.py」と名前を付けて保存してください。

プログラムの先頭にtkinterを利用しますよという宣言を記述します。

“`python
from tkinter import *
from tkinter import ttk
“`

次にメインとなるフォームを以下の様に定義します。

“`

元記事を表示

宮下の解析力学の例題、演習問題を解いてアニメーションで動かした

宮下解析力学の演習問題を解いています。間違い等を発見した人はご指摘していただくと幸いです。

# 1章
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267055/48a09ff3-594e-ddca-3c81-a80ad7161583.png)
長さが$l$の振り子の運動では角度$\phi$だけが実質的な変数である。質点の位置はデカルト座標ではなく、極座標で表したほうが便利になる。このように束縛条件を考慮した変数をうまく利用すると、運動の実質的な変数を扱うことができる。

### 振り子(図1.3)のラグランジアンを直交座標(x,y)で求めよ。(2章の例p.11)

運動エネルギーは$T=1/2m\dot{x}^2+1/2m\dot{y}^2$、ポテンシャルエネルギーは$U=mgy$
したがって、ラグランジアンは
$$L=\frac{m}{2}(\dot{x}^2+\dot{y}^2)-mgy$$
また、ここには束縛条件
$x^2+y^2=l^2$
がある。

### 振り子(図1.3

元記事を表示

DjangoのテストでDatetime.nowを固定したい

# はじめに
Djangoのテスト作っている時にどうしてもDatetime.now(timezone.now)を固定したかった。
そのメモです。

## やること
* mock.patch で モック作る

## コード
#### テストするコード
“`test_app/views.py
from django.utils import timezone

def hogehoge():
# タイムゾーン込みで現在時刻を取得 ex. datetime.datetime(2020, 10, 30, 15, 35, 29, 482661, tzinfo=)
return timezone.now()
“`
こんな感じのコードをテストしたい。

#### テストコード
“`test_app/tests.py
from unittest import mock

class TestClass(TestCase):
@mock.patch(“test_app.views.timezone.now”)
def test_hogeho

元記事を表示

SpiderのConfigを実行時に変更する。

#概要
### 前提
ScrapyのSpiderでは、設定ファイル(settings.py)やカスタム設定(custom_setting) でクローリング設定ができる。
ただし、この設定だけで済まそうとすると各設定(クローリングする深さ、優先度…)ごとにSpiderを作ることになり非常に管理コストがかかる。

### 本記事の内容
Scrapyのコマンドを調査したところ解消したので、記載する。

#やりたいこと
Spiderのソースコードを変更せずに、以下の設定を切り替える。

* クローリングする深さ(DEPTH_LIMIT)

#追加引数
「-s DEPTH_LIMIT=2」を追加することでクローリングする深さを、コマンド実行時に設定できる。

“`bash:cmdline例
crawl sample_crawler -s DEPTH_LIMIT=2
“`

#コード例
## Spider
Spiderのコード

“`python:spider.py
import scrapy
from scrapy.spiders import Rule
from scrapy.lin

元記事を表示

Pythonでモンテカルロ法を実装してみる

#はじめに
どうも、初めまして。この度、Qiitaで書き始めたものです。どうぞよろしくお願いします。さて、最初の記事は何番煎じかはわかりませんが、モンテカルロ法をPythonで実装する方法を記事にすることにしました。
#モンテカルロ法とは
そもそも、モンテカルロ法とはどんな方法か。ご存じの方も多いとは思いますが、今一度説明します。数値解析におけるモンテカルロ法は、確率を近似的に求める手法によく使われています。また、二次元上における閉曲面に囲まれた面積を求めることもできます。今回は、モンテカルロ法で円周率を求めてみます。
#モンテカルロ法による円周率の求め方
まず、下の図のようなものがあるとします。
![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/835335/7ea045d0-3577-bdd2-9eb8-e0b0cbdcbad0.png)
青線は半径が1の円の円周を表しています。ここに、ランダムで点を置いていき、置いた数($n$)と円周内に置かれた点の数($p$)を数えます。そして、モンテカルロ

元記事を表示

python学習(補足)

先に記載したpythonのCSVモジュールについての補足である

正直ドキュメントやググれば分かる内容だが、
備忘録として残しておく

CSVファイルを開いて別ファイルにそのまま書き出したい場合
リスト形式で渡すにはreaderメソッドを使う

この時readerメソッドの返り値はもちろんリスト形式となる

“`
import csv

data=[]

#CSVをリスト形式で読み込む
with open(‘data.csv’ , ‘r’, newline=” , encoding=’utf-8′) as f:

r = csv.reader(f)
data = [ i for i in r ]

#CSVをリスト形式で書き込む
with open(‘data.csv’ , ‘w’, newline=” , encoding=’utf-8′) as f:

w = csv.writer(f)
w.writerows(data)
“`

この時dataに入るのは以下のような多重リストとなる

“`
[[‘python’, ‘1’], [‘php’

元記事を表示

python学習

pythonの学習をするにあたって開発エンジニアではない私のようなインフラエンジニアでも
すごくわかりやすく説明してくれるudemyのpython講座をお勧めしたい
特に講師の酒井潤さんは話し方も聞き取りやすく内容もかなり広い部分を網羅しているので、
実際にコードスタイルにも言及していたり実務的なナレッジも学べるのでありがたい
(※個人的にはこういうのはあまり市販の本を読んでもわからないとことだと思う)

https://www.udemy.com/course/python-beginner/

その課題の中にQ&Aでロボットがお勧めのレストランを聞いてきてその答えをCSVに書き出して答えの数をカウントアップしていくという課題があるのだがこれが難しい。。。

正直ここで一度挫折して投げたのだが最近また別件でPythonを触れる機会がありまた勉強意欲が再燃した

まだ先の課題の完成には程遠いがCSVにカウントアップされる処理について根底の部分はできたので、
自分がハマったところについて備忘録として残しておく。

【はまった部分】
まずCSV上で入力した内容のカウントアップという処理がで

元記事を表示

django-allauthで、CustomUserを使って複数種類のユーザを管理する(multi type user)

# 概要
– Djangoで、複数のユーザ種別を作れるシステムが欲しい
– 「サプライユーザ」「バイヤーユーザ」の2種類のユーザを作れるようにする
– ユーザ種別ごとに、異なる属性を持たせる
– サプライユーザは会社名、バイヤーユーザは最寄り駅を登録できるようにする
– 環境は、
– Python 3.6.9
– Django 3.1.1
– django-allauth 0.42.0 (ソーシャルログイン機能)

# Python + Django の制限
– ユーザ認証(ログインやサインアップ)に使用できるモデルクラスは1つだけ
– settings.pyの `AUTH_USER_MODEL` で指定する

# 実装の概要
– CustomUserモデルを1つ作り、userTypeをもたせる
– ユーザ種別ごとの情報は別テーブルに持ち、カスタムユーザクラスと`OneToOneField`で紐付ける
– UserDetailSupplier
– UserDetailBuyer
– ユーザの保存にはアダ

元記事を表示

Mac上でPythonかGolangでGUI開発環境を整えたい

またまた無職になった。
ニート期間中に技術力を上げるため、就職活動しながら勉強することにした。

# スクリプト言語の勉強
一昔前はPerl言語に熱中していたが、数年間離れた生活をしていた。
不倫したと思われたのか、一目Perl言語を見ただけでは理解できない感じにふてくされた態度を取られた。
構ってあげなかった私に問題があるのかもしれないが、このまま分かれようと思う。
一体いくらつぎ込んだのか分からないぐらい膨大な書籍代だが、私の一方的な貢ぎ方に問題があったと思って諦めることにする。
心機一転し、異なるスクリプト言語に本腰を入れようと思う。
しかし、まだ本命を決められないでいる。

## 本命選び
今の考えは2点ある。

* Python
* Golang

テキスト処理をしたいが、それはPerl言語をさておき、上記2点は優劣付けがたいようだ。
ちょっと触った感じでは、Go言語の方が馴染みやすかった。
如何せん、ちょっとした処理とは言え、数週間や数ヶ月後には使い方を忘れているかもしれない。
それでもテキスト

元記事を表示

OTHERカテゴリの最新記事