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

Python関連のことを調べてみた2020年05月28日
目次

CCC: coding crash course (5) Steve Jobsのスピーチに出現する単語・文字の頻度を調べる

# Steve Jobs のスピーチ

まず、スタンフォード大学のページからスピーチの文字情報を取得し、段落分けをしないテクストファイルを作成します。

Text of Steve Jobs’ Commencement address (2005)

“`python

f= open(“stevejobs.txt”,”r”)

contents =f.read()

“`

以下のようにすると、「(ほぼ)単語のリスト(と言えるもの)」`list_word `を作ることができます。

“`python

list_word = contents.split(” “)

“`

これをつかって、特定の単語、例えばtheが何回出てくるかを数えることができます。

“`python

count = 0
for w in list_word:
if (w == “the”):
count = count + 1

print(count)
# 91

“`

なお、上で「単語のリスト」と言い切らなかったのは、このやり方では、文末の単語に「.」などがくっ

元記事を表示

Python3 を子供に教えるためにパスワード生成機を作ってみた(オマケ)

# マイナンバーカードの暗証番号変えるのが流行ってるみたいなのでパスワード生成機を作ってみた

 本当は仕事で任意の桁数、1000個以上のパスワードが必要になったからなんですけどね・・・
折角なので、これも Python のお勉強と以下のような仕様でパスワード生成機を作ってみました。

1. 任意の桁数のパスワード
2. 英語の小文字を混ぜる(か選択できる)
3. 英語の大文字を混ぜる(か選択できる)
4. 記号を混ぜる(か選択できる)
5. 3文字連続した文字ははじく(123 , abc , 987 , XYZ , 121 などはダメ!)
6. 上記ルールのパスワードを指定数分作成する
7. 全部ファイルに出力する

 大したことはやってないですね。自分的には `check_err3()` があんまり綺麗じゃないので他にやりようは無いんかな〜などと思ってますが。

 「子供に教える」という観点では、オセロよりこっちのプログラムの方が難解ですね。なぜなら文字コードという概念が出てくるからです。「君が今観てる画面に表示されている A は16進数の 0x41 なんですよ」なんて言っても理解

元記事を表示

写真1枚で高精度な3D画像簡単作成やってみた。(depthをnumpyで加工してみる)

#概要
**写真1枚で**
**高精度な3D画像↓ 簡単作成**できるよう。

[写真1枚で高精度な3D画像簡単作成やってみた。(depthがPNGで編集できるようになりましたよ。)](https://qiita.com/torinokaijyu/items/aca0dc6fb038dcd023d7)
の記事参照。

以下が論文とgithub。

https://arxiv.org/pdf/2004.04727.pdf
論文『3D Photography using Context-aware Layered Depth Inpainting』
Meng-Li Shih1 さんら

githubは、以下。
https://github.com/vt-vl-lab/3d-photo-inpainting

#実施例
加工元画像 
https://pixabay.com/ja/ を利用

元の1枚の静止画。
CCC: coding crash course (4) 円周率3.141562…. に出現する数字をヒストグラムにする

# 3.141562…. に出現する数字の頻度分布

円周率(PI)の小数点以下に出てくる数字のヒストグラムを作ります。

効率重視ではなく、初心者向けのやり方で試してみましょう。

まず、PIの小数点以下を http://www.eveandersson.com/pi/digits/pi-digits?n_decimals_to_display=500&breakpoint=500 で取得します。

“`python

char_pi = “141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701938521105559644622948954930381964428810975665933446128475648233786783165271201909145648566923460348610454

元記事を表示

Python3 を子供に教えるためにオセロを作ってみた(6)最終回

# オセロクラスについて解説していきましょう その3

## 「関数に渡された X と Y の隣のコマと、その隣のコマを調べる」関数
 さてさて、最も難解かもしれませんが解説していきます。
 これから説明するオセロクラスの関数 `ot_next_onepeace()` は、**「関数に渡された X と Y の隣のコマと、その隣のコマを調べる」**という機能の関数です。
 この言葉がとても重要になる関数です。もう1度言いますね。
 この関数が実行するのは**「関数に渡された X と Y の隣のコマと、その隣のコマを調べる」**だけです。
 仮にオセロ盤のマス目が100x100の盤だったとしても、この関数が実行するのは**「関数に渡された X と Y の隣のコマと、その隣のコマを調べる」**だけなのです。

### なぜなら「自分が自分を呼び出す関数(再帰関数)」だから!

 少なからずコマを置けると判断した場合、ひっくり返せる方角を全てひっくり返していかないとなりません。そのためには、8方向に対してひっくり返しができるかどうか?、どこまでひっくり返せるか?を考えなければなりませんよね。

元記事を表示

Pythonで文字列を変換(a -> b)する場合、if文と辞書型どちらを使うのが速いのか

# 背景とやったこと
GCPのCloud Functionsで「りんご」なら「果物」、「いちご」なら「野菜」、のように毎回入力をペアとなる単語に変換したかったのですが、
**if文でゴリゴリ変換**するのと**辞書型の対応表を用意して変換**するのどちらが早いのか疑問に思ったので試してみました。
注)なお自分の場合はコールドスタートになることが多いので、辞書型生成も含めた所要時間を計算しています

## 結論
**毎回辞書型の読み込みが発生する場合(AWSのLambdaやGCPのCloud Functionsのコールドスタート時など)は**
if文の方が速い。

keyが5文字の場合
![fig2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/304608/a580dc25-7c51-4f71-1692-ab48a72799d2.png)

keyが10文字の場合
![fig1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com

元記事を表示

processingのコードを送信したらgifかpngで出力してくれるslackbotを作った話

# はじめに
深夜テンションで一気に書ききったのでたくさん修正するかもしれません。
この記事ではslackbotを起動に漕ぎ着けるまでの解説を行います。デプロイして運用!とかは他の記事を見ながら頑張っていただけたら…
この記事で使用してるコードは[こちら](https://github.com/kota-shiokara/processing-slackbot)に上げてます。

なお、この記事は様々な説明を省略してたりするのでご了承ください。

# 本文
## 環境など(筆者の環境なのであくまでも目安に)
– macOS Catalina 10.15.4
– Slack
– processing-java
– Python 3.7.4(Python3系なら多分大丈夫だと思います)
– [slackbot](https://github.com/lins05/slackbot) 0.5.6
– [Pillow](https://pillow.readthedocs.io/en/stable/) 7.1.2

pipでslackbot、Pillowライブラリをインストールしてお

元記事を表示

強化学習の基礎を学んでCart Poleで遊んでみた(単純なQ Learningを実装)

#はじめに

 これまで機械学習・統計を学んでいました。その中でも強化学習についてあまりきちんと勉強していていなかったため、実装を交えて理解を深めました。
 
 参考資料としては下記です。

+ [scikit-learnとTensorFlowによる実践機械学習](https://www.oreilly.co.jp/books/9784873118345/)
+ [深層学習教科書 ディープラーニング G検定(ジェネラリスト) 公式テキスト ](https://www.amazon.co.jp/%E6%B7%B1%E5%B1%A4%E5%AD%A6%E7%BF%92%E6%95%99%E7%A7%91%E6%9B%B8-%E3%83%87%E3%82%A3%E3%83%BC%E3%83%97%E3%83%A9%E3%83%BC%E3%83%8B%E3%83%B3%E3%82%B0-G%E6%A4%9C%E5%AE%9A-%E3%82%B8%E3%82%A7%E3%83%8D%E3%83%A9%E3%83%AA%E3%82%B9%E3%83%88-%E5%85%AC%E5%BC%8F%E3

元記事を表示

AtCoder Beginners Contest 過去問チャレンジ9

# AtCoder Beginners Contest 過去問チャレンジ9

## [ABC071D – Coloring Dominoes](https://atcoder.jp/contests/abc071/tasks/arc081_b)

まず左端が縦だったら塗り方は3通りである. 横の場合は 3 * 2 で6通りである. 次に縦の次に縦が来た場合、前の縦の色と違えばいいので2通りとなる. 縦の次に横が来た場合、上側から決めるとすると、縦と違うのにすればいいので2通りで、そうすると下側はもう一通りしか無いので、2通りとなる. 横の次に縦が来た場合は、既に2色決まっているので1通りしか無い. 横の次に横が来たときは、以下の通り3通りある.

“`
0022 0011 0011
1100 1100 1122
“`

後はそれを積算すれば良い.

“`python
N = int(input())
S1 = input()
S2 = input()

if S1[0] == S2[0]:
result = 3
else:
result = 6
x = 0

元記事を表示

[競プロ用]ダブリングまとめ

# いつ使うのか

* 同じ操作を繰り返したN回目の状態を求める時。
(特に、一つの局面に複数の要素があり、互いに遷移する場合に有効)

# 何がいいのか

通常、端からするとO(N)のオーダーがかかるところをO(logN)に短縮することができる。
繰り返し二乗法もこの一種。
上記のような複数の要素X個に対してN回操作すした結果全てを求める場合にO(XlogN)に抑えられるのは大きい。

# どうするのか

繰り返し二乗法と考え方は一緒。1回目の結果から2回目を、2回目の結果から4回目の結果を、、、と求めていく。
配列(複数の要素を同時に操作していく場合には二次元になる)に各操作後の状態をメモしていく(なんかdpみたい?)。

# イメージ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/406130/0c4580ea-75a3-7ea8-c765-10d431ae7670.png)

# 考えること

N回目がちょうど2^kで表せれば直接リストを参照できるが、端数になる場合には構築

元記事を表示

筑波大学の機械学習講座:課題のPythonスクリプト部分を作りながらsklearnを勉強する (7) 最急降下法を自作

前回
[筑波大学の機械学習講座:課題のPythonスクリプト部分を作りながらsklearnを勉強する (6)](https://qiita.com/legacyworld/items/e54c664fc138b75dd166)
https://github.com/legacyworld/sklearn-basic

# 課題 4.3 最急降下法と確率的最急降下法
解説は第5回(1) 21分あたり
課題を読んだときは楽勝と思ったのだが、解説を見てみるとscikit-learnそのままでは無理だった(多分)
理由としてはステップで動いていく毎にLossを表示するグラフを書く方法が見当たらなかったからである。
せっかくなのでいろいろ勉強するために下記を実装した。

– 自作の再急降下法
– 自作の再急降下法を使って交差検証をする

ググると再急降下法自体はいくらでもあるのだが、リッジ回帰を入れたものがあまり見当たらない。
数学的な説明は一応これだろう。
https://www.kaggle.com/residentmario/ridge-regression-cost-function

元記事を表示

[Python]イテラブル、イテレーター、ジェネレーターをざっくり理解する

イテラブル(Iterable)、イテレーター(Iterator)、ジェネレーター(Generator)について使いこなしたいが、正直なんとなくしか分からないのでイメージしやすいように簡単にまとめました。

###イテラブル(Iterable)
繰り返しに使えるオブジェクト。list, dict, set, strクラスのオブジェクトはイテラブル。
簡単に言うと***for構文で使えるもの***

###イテレーター(Iterator)
イテレーターは、イテラブルの一種(イテラブルは、イテレーターとは限らない)
簡単に言うと***リストみたいなもの***
next()で現在の要素を返し、次の要素に進めます
簡単に言うと***リストみたいなものから空になるまで取り出していく***

###ジェネレーター(Generator)
関数中に[yield 返り値]があると、その関数をジェネレーター関数と呼ぶ。また、その関数の返り値をジェネレーターイテレーターと呼ぶ。
簡単に言うと***yieldを使う関数***です。

イメージ図
スクリーンショット </p></blockquote>
</blockquote>
<aside class='widget widget-post'>
<div class='tag-cloud-link'>Python</div>
<div class='tag-cloud-link'>繰り返し処理</div>
</aside>
<div><a style='width:100%;' class='btn__link' href='https://qiita.com/KazukiTerashima/items/d3ca8f10cd5a302d62d8'>元記事を表示</a></div>
<h3 id=1ヶ月でG検定に合格したい Day 1

2020年7月4日試験日のG検定に先ほど申し込みました。
まだなにも勉強していないのですが、頑張ろうと思います。
まずは合格体験記や、合格までのロードマップ的なのをきっと誰かが書いてくれていると思うので、そういうのを読みあさってみようと思います。

どういう知識が問われるんだろうか。難しかったらどうしよう。。。

元記事を表示

ゼロから始めるLeetCode Day38「208. Implement Trie (Prefix Tree)」

#概要
海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。

その対策としてLeetCodeなるサイトで対策を行うようだ。

早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイト。

せっかくだし人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。

[Leetcode](https://leetcode.com/)

[ゼロから始めるLeetCode 目次](https://qiita.com/KueharX/items/6ee2502c3b620c795b70)

前回
[ゼロから始めるLeetCode Day37「105. Construct Binary Tree from Preorder and Inorder Traversal」
](https://qiita.com/KueharX/items/c5442e4cd3baa6bb1ce

元記事を表示

【Python】月の初日や最終日を取得する方法

# 結論
replaceメソッドを使うと楽チン。

“`python
from datetime import datetime
from dateutil.relativedelta import relativedelta

today = datetime.now().date()
print(today)
# => 2020-05-27

last_month_start = (today – relativedelta(months=1)).replace(day=1)
print(last_month_start)
# => 2020-04-01

last_month_end = today.replace(day=1) – relativedelta(days=1)
print(last_month_end)
# => 2020-04-30
“`
変数名がアレなのは見逃してください。

# 参考
https://www.lifewithpython.com/2018/06/python-get-first-and-last-day-of-month.html

元記事を表示

Python可視化ツールいろいろ

# 目的
分析コンペの効率化のための、可視化ツールのいろいろまとめ。
少しずつ、増やしていく!

## 1.相関マップ
pandasデータフレームの各列の相関をヒートマップ表示。
各特徴量の相関、モデルのアンサンブル用の予測結果の相関に使用する。
### 参考

### コード
“`python
fig ,ax = plt.subplots(1,1,figsize=(12,12))
sns.heatmap(df.corr(), annot=True, fmt=’.7f’, ax=ax)
df.corr()
“`

## 2.混同行列(Confusion Matrix)
### 参考

### コード
“`python
import numpy as np
import pandas as pd
from scipy import signal
from sklearn.metrics import confusion_matrix, f1_score, plot_confusion_matrix

# Thanks to https://www.kaggle.com/marc

元記事を表示

Python と VSCode で競プロ – 標準入力の簡易化とサンプルケース判定の自動化 –

最近 AtCoder で競プロを始めました :beginner:
始めたのはいいのですが、パッとは解けないので何度も何度もデバッグ地獄です :sob:
そのたびターミナルにテストケースをコピペの嵐…
もうそんなことはやめよう :no_entry_sign:

この記事は
windows10 1909
VSCode 1.45.1
Python 3.8.2
で確認した内容となっています。

# 1. デバッグには sys.stdin を使おう
まずは標準入力の簡易化です。

「VSCode python 標準入力」などの条件で検索していると、teratail にこんな質問と回答がありました
[VS Codeで標準入力を受け取る方法(Windows10・Python)](https://teratail.com/questions/251619)
競プロ界隈では有名なのかわかりませんが、私が探していたのはまさにこれでした。

“`python
import io
import sys

_INPUT = “””\
2
1 2 3
aaa
“””
sys.stdin = io.Stri

元記事を表示

【言語処理100本ノック 2020】第5章: 係り受け解析

## はじめに
自然言語処理の問題集として有名な言語処理100本ノックの[2020年版](https://nlp100.github.io/ja/)が公開されました。
この記事では、以下の第1章から第10章のうち、[第5章: 係り受け解析](https://nlp100.github.io/ja/ch05.html)を解いてみた結果をまとめています。

– [第1章: 準備運動](https://qiita.com/yamaru/items/6d66445dbd5e7cef8640)
– [第2章: UNIXコマンド](https://qiita.com/yamaru/items/b809e6d66f9efcfb34d7)
– [第3章: 正規表現](https://qiita.com/yamaru/items/255d0c5dcb2d1d4ccc14)
– [第4章: 形態素解析](https://qiita.com/yamaru/items/e06014b146a18e97ca59)
– 第5章: 係り受け解析
– 第6章: 機械学習
– 第7章: 単語ベクトル
– 第8章: ニュ

元記事を表示

Qt for Python アプリの自己アップデート

備忘録かつ添削をお願いしたく。

パッケージ化しないアプリでも、アップデートする仕組みを入れておかないと、修正する度にそれぞれのマシンでコピーする作業が起こってしまう事に気が付きました。
http経由でダウンロードする事も、zipファイルを展開することも簡単にできてしまうのだから、それを組み合わせてアプリケーションディレクトリのの .py ファイルを更新してやればよいのでは?ということで、当該の部分はこのようになりました。

“`python

def updateDownloadQuit(self):
url =”http://〜〜”
title = ‘./update.zip’
urllib.request.urlretrieve(url,”{0}”.format(title))

QMessageBox.information(None, “Info”, “アプリケーションを更新して、終了します”)
with zipfile.ZipFile(‘update.zip’) as existin

元記事を表示

Python 備忘録(個人的ブックマーク)

多分、ゴミ投稿… :sweat: 逐次、更新。

# 覚書
## 商と余り

– [Pythonのdivmodで割り算の商と余りを同時に取得 | note.nkmk.me](https://note.nkmk.me/python-divmod-quotient-remainder/)

“`python
q = 10 // 3 # 商
mod = 10 % 3 # 余り
q, mod = divmod(10, 3) # 商と余りを同時に
“`

## swap

– [Pythonで変数やリストの値を入れ替え(交換・並べ替え) | note.nkmk.me]()

“`python
a, b = b, a
“`

もう tmp 要らない…。

## ユークリッドの互除法 Python 版

– [拡張ユークリッドの互除法 〜 一次不定方程式 ax + by = c の解き方 〜 – Qiita](https://qiita.com/drken/items/b97ff231e43bce50199a)

“`python
def gcd(a, n):
if

元記事を表示

OTHERカテゴリの最新記事