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

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

Pythonにおけるモジュール、クラス、メソッドなどの関係性 ーTensorFlow 2.0チュートリアルー

#はじめに
Pythonのパッケージ、モジュール、クラス、メソッド、関数、インスタンスの関係性がよく分からなかったのでまとめました。まとめる際に、例としてTensorFlow 2.0のチュートリアルを紹介しています。

#この記事の対象者
この記事の対象者は以下のような方々です。
・Pythonのパッケージ、モジュール、クラス、メソッド、関数、インスタンスの関係性を確認したい。
・Python初心者でTensorFlow(ソフトウェアライブラリの)構造がよく分からない。

###本記事のおおまかな内容

1. 本記事で使用したTensofFlowのチュートリアル

2. まずはライブラリのインポート

3. TensorFlow(一般的なライブラリ)の構造

4. パッケージ、モジュール、関数の例

5. クラス、メソッド、インスタンスとは

6. クラス、メソッド、インスタンスの例

#1. 本記事で使用したTensofFlowのチュートリアル
本記事では下記のTensorFlow2.0のチュートリアルを例として使います。
[TensorFlow Tutorial](https:/

元記事を表示

python: 自作クラスをnumpy ndarrayに使用する

https://numpy.org/doc/stable/user/basics.subclassing.html#module-numpy.doc.subclassing (公式)を参考にすれば良いでしょう.

以下, 簡単な実装例.

“`python
class Element:
def __init__(self, r, c):
self.r = r
self.c = c

def __repr__(self):
return f’Element({self.r},{self.c})’
“`

上の自作クラスを, 2次元ndarrayの要素として, r行c列目にElement(r, c)を使いたいとします.

MyNdarrayクラスをnp.ndarrayを継承して以下のように作ります.

“`python
import numpy as np

class MyNdarray(np.ndarray):
def __new__(cls, dimension):

元記事を表示

Django お問い合わせフォーム2

#前提
前回の続きです。

https://qiita.com/yusuke_mrmt/items/ebefdb6e8704913f6a4c
#本題

##Gmailでアプリパスワードの設定を行います。

二段階認証を設定します。

まずGmailアプリを開き左上にあるメニューバーをタップします。
下の方に**設定**とあるのでタップします。

**Googleアカウントの管理**をタップします。

**セュリティ**の項目を選択し、
**アカウントの保護**や適切な設定を行った上で
二段階認証などの設定をしましょう。
※二段階認証設定後に、アプリパスワードの項目が現れます。

取得したパスワードは、アプリにだけ使うのでGoogleさんが仰ってるように
どこかに保管しておくなどの処置は取らなくてもいいと思います。
ですがDjangoの設定ファイル**settings.py**に記述するので
テキストエディタにコピーしておきましょう。

##メール送信機能を追加する
Djangoのメール送信機能を追加していきます。

まずは設定ファイルの**sett

Python3ではじめるシステムトレード:新型コロナで見ておくべきバイオ・ヘルス株をUS Yahoo Financeからダウンロード

米国で有名なバイオ関連銘柄に投資するETFはIBBです。

主なバイオ株、ヘルス株は以下の通りです。

```Python
BIO=['AMGN','AVGO','BIIB','BMRN','CELG','GILD','ILMN','INCY','REGN','VRTX','ALNY',
'NKTR','EXEL','ALKS','BLUE','JAZZ','SGEN','QGEN','NBIX','SAGE','UTHR','ABBV']
HLT=['CERN','HSIC','HOLX','IDXX','ISRG','MYL','WBA','XRAY',
'UNH','JNJ','PFE','MRK','MDT','BMY','ABT','LLY','TMO','ANTM','AGN','DHR','CI','PRGO']
```

まずはそれをダウンロードしてグラフにしてみましょう。

最初に準備をします。

```Python
%matplotlib inline
import matplotlib.pyplot as plt #描画ライブラリ
impor

concurrent.futures

#processにする場合は、threadの部分をprocessに書き換えてください。

```py
import concurrent.futures
import logging
import time

logging.basicConfig(level=logging.DEBUG, format='%(threadName)s: %(message)s')

def worker(x, y):
logging.debug('start')
r = x * y
logging.debug(r)
logging.debug('end')
return r

def main():
with concurrent.futures.ThreadPoolExecutor(max_workers=5) as executor:
f1 = executor.submit(worker, 2, 5)
f2 = executor.submit(worker, 2, 5)
logging.debug(f

Pythonでのチームアプリ開発に参画するための学習履歴~索引ページ~

# はじめに

[Saku731さん](https://twitter.com/Koji21825331) が主催する [Pythonによるチームアプリ開発](https://twitter.com/Koji21825331/status/1213663249649922049?s=20) に参加するために学習したことをアウトプットした記事の索引ページです。

企画に参加するにあたっての所信表明のようなものは目次のページに書いてありますのでそちらをご覧いただけると幸いです。
0からPythonを始めてみようかなと思っている方への勉強のフローチャートくらいにはなっていたら幸いです。

# 目次
[Pythonでのチームアプリ開発に参画するための学習履歴~paizaラーニングの「Python3入門」を終えて~](https://qiita.com/shitikakei/items/832b3ad636be0f662586)

# Pythonの基礎項目の補足とjupyterLab環境構築
[Pythonでのチームアプリ開発に参画するための学習履歴~基礎項目の補足とjupyterLab環境構

Pythonでのチームアプリ開発に参画するための学習履歴~Djangoチュートリアル7~

# はじめに

Djangoチュートリアルもこれで基本的な部分は最後となります。
最後は、アプリの管理ページのカスタマイズについて少し見ていきましょう。
DjangoにはXAMPPでいうphpMyAdminのようにSQLを使わなくてもブラウザでテーブルにレコードの追加や更新・削除を行えるadminフォームという機能があるのでそれをカスタマイズしていきます。

# 基本的なカスタマイズ

```polls/admin.py

from django.contrib import admin

from .models import Question

class QuestionAdmin(admin.ModelAdmin):
fields = ['pub_date', 'question_text']

admin.site.register(Question, QuestionAdmin)

```

`QuestionAdmin`クラス以下がカスタム内容です。
つまり、モデルごとにクラスを作ることで各テーブルごとにカスタム内容を変えることができるわけです。
`field

pythonでGCSに置いた文字列をブラウザで見ると文字化けする

# tl;dr

- GCSはContent-Typeを指定できる
- Chromeは`text/plain`をShift-JISで表示しようとする
- `text/plain; charset=utf-8` が親切

# 現象

次のようなスクリプトでGoogle Cloud Storageにオブジェクトを作成します。
これは[googleapis/python-storageのExample Usage](https://github.com/googleapis/python-storage)のコードを、日本語を含む文字列を保存するよう変更したものです。
bucketの作成とか認証とかはここでは関係ないので飛ばします。

```python
from google.cloud import storage
client = storage.Client()
bucket = client.get_bucket('bucket-id-here')
blob = bucket.get_blob('remote/path/to/file.json')
blob.upload_from_

【第2章】言語処理100本ノックでPythonに入門

この記事は拙著[言語処理100本ノックでPythonに入門](https://qiita.com/hi-asano/items/02d82cc1e89fc663b4e6)の続きです。
[100本ノック第2章](https://nlp100.github.io/ja/ch02.html)に取り組みながらPython(とUnixコマンド)の基礎を学びたい方向けです。

12番くらいまでできればほぼPythonの基礎はほぼOKです。

あとは少し細かい知識を地道に身に着けていく感じになると思います。
まずは問題文で指示されたファイルを適当な方法でダウンロードします。

```shell-session
$ wget https://nlp100.github.io/data/popular-names.txt
```

# 問題文の補足
自然言語処理においては、巨大なテキストファイルを1行ずつ処理したいという場面が多く、この章の問題もそうなっています。

1行が1データになっていて、列が項目に分けられているような構造を表現する形式にはTSV (Tab-Separated Valu

pythonのmusic21ライブラリとAIきりたんはとても楽しいのでTIPS

別に行き先を決めているわけじゃないが、保たなそうなので、身の振り方を考えるかも。

まあそれはそうと、NEUTRINOによる東北きりたん、と言えばいいのか、「AIきりたん」で遊んでいる。作曲なんて久しぶりで楽しい。で、スキャットとかしてもらうのもいいな、とか、メロディー以外にもきりたんに頑張ってもらおうと思うと、やっぱりそこはちょいちょい自動化できそうな気がしてくる。

で、そういう効率化をしようとすると、 *.musicxml を出力して *.f0 とか *.lab とかも弄って、ということになろうかと思うが、labはただのテキストファイルだし、f0はnumpy.fromfileで読めちゃうのでここはやはりmusicxmlが一番手間がかかる。ただ、調べてみると、pythonのmusic21ライブラリが便利らしい。自動作曲等の世界では有名らしい。普通にpip install music21で入ってくれたし、NEUTRINO的に大事なポイントはすべて押さえてくれていた。超ありがたいので、この気持ちもそのうち歌にしようとおもう。

ちなみにそのポイントとは下記だ。
・タイが書ける(これは書

言語処理100本ノック2020: 第三章(正規表現)

#### (注意): 先に進めること優先で現状記事が汚いです。

[言語処理100本ノック2020版](https://nlp100.github.io/ja/)が公開されたのでこの機会に解いていく。
[GitHub](https://github.com/TsumaR/NLP100knock)に公開しているJupyterをmarkdown出力したものなので,一度読み込んだパッケージはその後に読み込んでいないことに注意。

第一章は[ここ](https://qiita.com/TsumaR/items/15e68af5179ba47f1d40)

いつも調べて行っていた正規表現に対して,まさにノックのような反復練習を行い,今後の解析がスムーズに行えるようになりそうでよかった。
最後まで終わらせることを目標にやっている途中なので何か間違いがあるかもしれません,ご指摘していただけますと幸いです。
記事の体裁も解き終わったら整える予定です。

## 第3章:正規表現

> Wikipediaの記事を以下のフォーマットで書き出したファイル[jawiki-country.json.gz](htt

yukicoder contest 245 参戦記

# yukicoder contest 245 参戦記

## [A 1033 乱数サイ](https://yukicoder.me/problems/no/1033)

問題を見た瞬間に、K ってなんのためにあるんだろうと思ったが、やっぱり要らなかった(笑). 0~Nの平均値は0~Nの合計値をN+1で割ったものなので (0 + N) * (N + 1) ÷ 2 ÷ (N + 1) なので、N ÷ 2 となる.

```python
N, K = map(int, input().split())

print(N / 2)
```

## [D 1036 Make One With GCD 2](https://yukicoder.me/problems/no/1036)

SegmentTree の GCD 版を持っていたので瞬殺だった(笑). 基本は尺取法. GCD が1になったらそこから先はどれだけ進めても1なので、GCD(Ai, Ai+1, ..., Aj) で初めて1になったのであれば、Ai

Pythonで毎日AtCoder #46

### はじめに
[前回](https://qiita.com/taxfree_python/items/49bb8475455c4134e4ba)

### #46
[ABC131-D](https://atcoder.jp/contests/abc131/tasks/abc131_d)

**考えたこと**
$B_i$でsortして仕事を終らせるのに必要な時間を計算していきます。制限時間を越えたらflagを変えます。

```python
n = int(input())
ab = [list(map(int,input().split())) for _ in range(n)]

ab.sort(key=lambda x: x[1])
t = 0
flag = True
for i in range(n):
t += ab[i][0]
if t > ab[i][1]:
flag = False
if flag:
print('Yes')
else:
print('No')
```

[ARC093-C](https://atcod

pythonではじめるデータ分析 (データの可視化2 : plotlyを使用)

# はじめに
前回の記事 : pythonではじめるデータ分析 (データの可視化1)
https://qiita.com/CEML/items/d673713e25242e6b4cdb

上記の記事の続きになります。
使用するデータセットは同じです。

ソースコード
https://gitlab.com/ceml/qiita/-/blob/master/src/python/notebook/first_time_data_analysis.ipynb

# 本記事の内容
前回見辛かったヒストグラムを改善します。

## 前回のおさらい
#### データセットについて
・提供元:カルフォルニア工科大学
・内容:心臓病患者の検査データ
・URL :https://archive.ics.uci.edu/ml/datasets/Heart+Disease
・上記URLにあるprocessed.cleveland.dataのみを使用します。

#### 解析目的
データセットは患者の病態を5つのクラスに分類しています。
各クラスの特徴を掴む事を目的に解析を進めてみようと思います。

##

Pythonチュートリアル(10章)の内容を箇条書きでまとめた

前の記事:Pythonチュートリアル(9章)の内容を箇条書きでまとめた(作成中)

#はじめに
[Python3 エンジニア認定基礎試験](https://www.pythonic-exam.com/exam/basic)対策として、Pythonチュートリアル(書籍)の内容を暗記しやすい箇条書きにまとめた自分用メモです。

##参考資料
Pythonチュートリアル: https://docs.python.org/ja/3/tutorial/
10章: https://docs.python.org/ja/3/tutorial/stdlib.html
書籍: https://www.oreilly.co.jp/books/9784873117539/

#"10章 標準ライブラリめぐり"
- Python3 エンジニア認定基礎試験の配点
- 4 / 40問(10.0%) ☆☆★★★(重要度:中-)
- テーマ
- 標準ライブラリ

#10.1 OSインターフェイス
- **osモジュール** はOSとやりとりする関数を提供する。
- *os.getcwd()*

【小ネタ】Python/OpenCVでテスト画像生成

# テスト画像生成

- 作成した画像処理アルゴリズムは、テスト用画像で効果を検証することが多い。[^1]
- アルゴリズムの演算結果を細かい数値で検証したい場合など、自然画像よりも単純なパターンであったほうが検証の初期段階では有効な場合がある。
[^1]: [lena - wikipedia](https://ja.wikipedia.org/wiki/%E3%83%AC%E3%83%8A_(%E7%94%BB%E5%83%8F%E3%83%87%E3%83%BC%E3%82%BF))が使われることが多い

- 例えば、チェッカーパターンであったり、放送に使われるテストパターンなどである。[^2]
[^2]: [テストパターン (放送) - wikipedia](https://ja.wikipedia.org/wiki/%E3%83%86%E3%82%B9%E3%83%88%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3_(%E6%94%BE%E9%80%81))
- そこで Python と OpenCV を使ってコードを書いてみた。
(ほとんど個人的な備

vtkOpenFOAMReaderまとめ(随時更新)

# vtkOpenFOAMReaderについて

Class Reference
https://vtk.org/doc/release/7.1/html/classvtkOpenFOAMReader.html

pythonで実際に動かした場合の挙動を少しづつまとめていきます

### 初期化

``` python
import vtk
filename = "a.foam"

reader = vtk.vtkOpenFOAMReader()
reader.SetFileName(filename)
reader.Update()
print(reader)
```

printの出力例

``` python
vtkOpenFOAMReader (0x7fedd2c95be0)
Debug: Off
Modified Time: 105700
Reference Count: 2
Registered Events: (none)
Executive: 0x7fedd2caf9b0
ErrorCode: Undefined error: 0
Info

#1 Python初学者が簡単な英単語学習ツールを作る

# きっかけ

こんにちは。私は文系の大学生でプログラミングを独学で始めたのですが、何分ノリがわかりません。仕組みを理解していても、もっと効率的な方法を他の人達はしていたり、いわゆる一般的なプロジェクト開発というのを理解できていません。そういった意味で、批判上等で稚拙なプログラムを公開していきたいと思います。自分用の成長日記でもあります。いつか孫ができた暁には読ませます。そして英単語のプログラムを何故組んだのか、それは私の留学中の経験からでした。
留学中、字幕ありで映画を見ていたのですが、どうも会話においては使用する機械がなさそうであるけれど、知識として入れておきたい英単語が多くありました。それらを当初はノートに書いていたのですが分量が多く、時間がかかりました。現地の大学で授業を受けていたため、課題が多いのでわからない単語一気に打ち込んで見やすい状態でまとめてくれるプログラム組めば勉強捗るのでは??という言い訳で普段の勉強から離れPythonに手を出してしまったのでした。。。

#概要
私はまず、Paizaで学習をしました。無料には弱いです。それで基礎を学び、とりあえず作ってみよう!と

【python】ロトカ-ヴォルテラ方程式とかいう超絶かっこいい数式でライオンとガゼルの争いを再現してみた

# ロトカ-ヴォルテラ方程式
うーん、この中学二年生が考えたような名前の方程式。
**超絶かっこいい。**
今回はこの方程式を数値計算(python)で遊んでみたいと思います。
方程式の中身自体はこんな感じになっています。

```math
\frac{dx}{dt}=\alpha x-\beta xy \\
\frac{dy}{dt}=\gamma x-\delta xy
```

まあまあいかつい数式ですが、この方程式は**捕食と被捕食の関係を表した数式**です。見掛け倒しで実はそんなに難しくないので安心してください!!今回は**ライオンvsガゼル**というアフリカ設定で読み解いていきます。

## 式の理解
たくさんの文字が出てきていますが、一つずつ説明します。

### 変数・定数の定義
#### 変数
$x$ : 被捕食側の数(ガゼルの数), $y$ : 捕食側の数(ライオンの数)

#### 定数
$\alpha$ : 被捕食側の出生率, $\beta$ : 被捕食率, $\gamma$ : 捕食側の出生率, $\delta$ : 捕食側の死亡率

(学術的には正確では部分

Pyroでノンパラメトリックベイズ(SBP)

ノンパラメトリックベイズは無限次元のベイズモデルと言われます。
[前回の記事](https://qiita.com/takeajioka/items/f24d58d2b13017ab2b18)でやったガウス過程もノンパラメトリックベイズですが、もうひとつ有名なものは**ディリクレ過程**です。
理論的な説明は、「ノンパラメトリックベイズ(機械学習プロフェッショナルシリーズ)」や[こちらのQiita記事](https://qiita.com/masasora/items/5469638d93d9c834724b)が参考になります。

そもそもベイズ推定は下の3ステップで行います。
①パラメータの事前分布と事象の確率モデルを決める
②得られたデータから尤度を計算し、パラメータの事前分布と掛けることでパラメータ事後分布を計算する(ベイズの定理)
③パラメータ事後分布を積分することで予測確率分布を生成
この②で事前分布と事後分布が同じ分布になるものを共役事前分布と言います、
ベータ分布はニ項分布モデルの共役事前分布であるように、ディリクレ分布は多項分布モデルの共役事前分布になります。
つまりデ